当前位置:懂科普 >

综合知识

> 编译器怎么写

编译器怎么写

1. 汇编语言编译器是怎么编写的

编译器自举!搜索这个关键字

编译器怎么写

程序都是编译器编译的。这个是肯定的

至于第一款X语言编译器是不是直接1010101010自己写的那就不知道啦

一般开发编译器的话。有两条路选择

1.利用yacc(或者其变种)&lex(词法分析)-等工具自己生成语法模板

词法语法都可以使用这些工具自己生成

然后自己编写生成的中间码和生成的机器码就可以了

一般做编译原理类似试验都是如此的。许多编译器也的确是这样

2.自己写词法分析和语法分析。可以参考一些开源的编译器

lcc-这个是ANSI C99标准的编译器是开源的

或者nasm,watcom等编译器到上不少开源的编译器

总的来说。高级语言编译器比较难写

如果想快速写出一个的话

可以采用第一种做法。利用工具生成语法词法模板

先写一个简单的汇编编译器比较简单

开源的有nasm,jwasm(支持masm语法开源的编译器)

fasm(这款编译器是自举的.就是自己可以编译自己),

patible object format的错误警告,需要在通过重新设定Module的triple,我的PC的getTargetTriple的结果是“i686-pc-windows-msvc”,直接在后面再加上“-elf”即可

TheModule->setTargetTriple("i686-pc-windows-msvc-elf");

2. LLVM不支持windows下通过动态链接导出函数,如果需要使用C/C++的函数,需要通过addSymbol进行注册

llvm::sys::DynamicLibrary::AddSymbol(/*std::string("_") +*/ "printd", &printd);

3. Kaleidoscope里使用的JIT的查找函数的API,getpointerToFunction已经被弃用了,需要替换为getFunctionAddress

4. 我自己编写了一个程序,但要求带有编译器,如何实现

自己写编译器啊,你可以去图书馆借本《龙书》《鲸书》《虎书》,通读。

然后用CC++编写词法分析器、语法分析器、语义分析器、以及中间代码生成器

学习汇编语言,学会后,用CC++和汇编编写目标代码生成器和代码优化器。

这样你就能成功编写一个编译器了。以你现在的水平,至少半年或者一年吧……

其实这玩意做出来可以当毕业设计了,并且可能还能拿优。

你确定你们老师是让你写个编译器?还是写个makefile。

标签: 编译器
  • 文章版权属于文章作者所有,转载请注明 https://dongkepu.com/zonghezhishi/po8eg7.html