正在学习编译原理和汇编。根据 http://compilers.iecc.com/crenshaw/ 的tutorial,作者用的是turbo pascal 4.0,我想知道有没有其他更简单的方式,比如直接在terminal里面执行之类的。第一次发帖,多谢啦!
1
gaocegege 2015-03-09 11:15:49 +08:00
我在学编译原理的时候是要求写一个编译器,后端可以用llvm,llvm在mac是可用的。
|
2
hahastudio 2015-03-09 11:22:17 +08:00
按这个教程学的话,还是虚拟机装个 Windows 实在
我记得虎书是反过来的,那些工具用在 Windows 上比较痛,用在 *nix 上比较舒服 |
3
cdfmr 2015-03-09 11:47:23 +08:00
TP4的话,DOSBox就够了;或者试试用FPC(Free Pascal)替代TP4。至于Mac下的汇编器,nasm/yasm/jwasm/fasm应该都可以吧。
|
4
h4x3rotab 2015-03-09 11:55:10 +08:00 via iPad
这个我有发言权,参见我的期末作业plang-llvm项目:
http://h4x3rotab.github.com 这是一个完全在osx下开发的编译器,前端flex+bison实现语法分析,然后自己写代码生成llvm-ir,喂给llvm优化和汇编。你需要用到的工具有: * homebrew:osx的apt-get,安装开源工具必备 * 一个词法分析器生成器,比如flex * 一个语法分析器生成器,比如bison、lemon * Xcode:不必非要用xcode做开发,但是里面的工具链你是需要的,包含clang和make 编译原理的学习,前端你可以去自己实现分析器或者用生成器,后端建议用llvm框架,这样你就不用担心繁琐的汇编和链接问题了。如果po主只关心asm的话,直接写了汇编代码,保存为.S文件,用clang就可以处理,他会帮你调用汇编器和连接器,生成可执行文件。 不敢苟同上面的回复,osx是一个unix系统,意味着所有的unix/linux开源工具链都可以使用,在win下下面要不就cygwin,要不就用vs,前者折腾,后者很难体会到编译原理体系,因为所有东西都集成在一起。win下面学习汇编最好的办法是用ollydbg之类的调试器玩破解。 另外上面的链接不知道有没有贴错,用平板在外面回答的,有问题可以吼我一下,回去修改。 |
6
loading 2015-03-09 13:30:06 +08:00
虚拟机 dos,连ms dos也别用,不然有些操作系统层面的东西会干扰你。
|
7
yingluck 2015-03-09 15:33:10 +08:00
编译原理跟汇编没什么关系吧 python也可以写编译器
想搞汇编 可以买块板子搞 更有成就感 |