编译器怎么写

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. 我自己编写了一个程序,但要求带有编译器,如何实现 自己写编译器啊,你可以去图书馆借本《龙书》《鲸书》《虎书》,通读 。
然后用C\C++编写词法分析器、语法分析器、语义分析器、以及中间代码生成器
学习汇编语言,学会后,用C\C++和汇编编写目标代码生成器和代码优化器 。
这样你就能成功编写一个编译器了 。以你现在的水平,至少半年或者一年吧……
其实这玩意做出来可以当毕业设计了,并且可能还能拿优 。
你确定你们老师是让你写个编译器?还是写个makefile 。