Mat*_*erg 35 c compiler-construction gcc
我已经创建了我自己的(非常简单的)字节代码语言,以及一个执行它的虚拟机.它工作正常,但现在我想使用gcc(或任何其他免费提供的编译器)从普通的c程序为这台机器生成字节代码.所以问题是,如何修改或扩展gcc以便它可以输出我自己的字节代码?请注意,我不想将我的字节代码编译为机器代码,我想将c代码"编译"为(我自己的)字节代码.
我意识到这是一个潜在的大问题,最好的答案可能是"去看看gcc源代码".我只是需要一些帮助来解决这个问题.我认为必须有一些关于这个主题的文章或书籍可以描述向gcc添加自定义生成器的过程,但我没有通过谷歌搜索找到任何东西.
小智 27
我正忙着将gcc移植到我们之前设计的8位处理器上.我对我们的机器来说是一项艰巨的任务,因为它是8位的,我们只有一个累加器,但如果你有更多的资源,它就变得容易了.这就是我们尝试使用gcc 4.9和使用cygwin来管理它的方法:
config.sub
第250行附近查找# Decode aliases for certain CPU-COMPANY combinations.
在该列表中添加| my_processor \
# Recognize the basic CPU types with company name.
将自己添加到列表中:| my_processor-* \
搜索文件gcc/config.gcc
,在文件中查找案例$ {target}它是在880行附近,按以下方式添加自己:
;;
my_processor*-*-*)
c_target_objs="my_processor-c.o"
cxx_target_objs="my_processor-c.o"
target_has_targetm_common=no
tmake_file="${tmake_file} my_processor/t-my_processor"
;;
Run Code Online (Sandbox Code Playgroud)gcc-4.9.0\gcc\config\my_processor
my_processor.c
my_processor.h
my_processor.md
my_processor.opt
my_processor-c.c
my_processor.def
my_processor-protos.h
constraints.md
predicates.md
README.txt
t-my_processor
gcc-4.9.0/build/object
../../configure --target=my_processor --prefix=path for my compiler --enable-languages="c"
pea*_*ing 10
这很辛苦.
例如,我还使用自己的字节代码设计自己的"架构",并希望使用GCC生成C/C++代码.这就是我的方式:
完成后你可以只使用c或c ++而不使用os-dependet库(你的架构上目前没有运行的操作系统),现在你应该(如果需要的话)用你的交叉编译器编译很多其他的库来建立一个好的框架.
PS:LLVM(Clang)更容易移植......也许你想从那里开始?
归档时间: |
|
查看次数: |
7722 次 |
最近记录: |