V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
hulalalala
V2EX  ›  问与答

Mac 怎么弄汇编呢?

  •  
  •   hulalalala · 2015-03-09 11:03:47 +08:00 · 6432 次点击
    这是一个创建于 3548 天前的主题,其中的信息可能已经有所发展或是发生改变。

    正在学习编译原理和汇编。根据 http://compilers.iecc.com/crenshaw/ 的tutorial,作者用的是turbo pascal 4.0,我想知道有没有其他更简单的方式,比如直接在terminal里面执行之类的。第一次发帖,多谢啦!

    7 条回复    2015-03-09 15:33:10 +08:00
    gaocegege
        1
    gaocegege  
       2015-03-09 11:15:49 +08:00
    我在学编译原理的时候是要求写一个编译器,后端可以用llvm,llvm在mac是可用的。
    hahastudio
        2
    hahastudio  
       2015-03-09 11:22:17 +08:00
    按这个教程学的话,还是虚拟机装个 Windows 实在
    我记得虎书是反过来的,那些工具用在 Windows 上比较痛,用在 *nix 上比较舒服
    cdfmr
        3
    cdfmr  
       2015-03-09 11:47:23 +08:00
    TP4的话,DOSBox就够了;或者试试用FPC(Free Pascal)替代TP4。至于Mac下的汇编器,nasm/yasm/jwasm/fasm应该都可以吧。
    h4x3rotab
        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之类的调试器玩破解。

    另外上面的链接不知道有没有贴错,用平板在外面回答的,有问题可以吼我一下,回去修改。
    yangff
        5
    yangff  
       2015-03-09 12:23:09 +08:00 via Android
    @h4x3rotab 。。你什么时候产生了win上所有东西是集成在一起的错觉。。
    loading
        6
    loading  
       2015-03-09 13:30:06 +08:00
    虚拟机 dos,连ms dos也别用,不然有些操作系统层面的东西会干扰你。
    yingluck
        7
    yingluck  
       2015-03-09 15:33:10 +08:00
    编译原理跟汇编没什么关系吧 python也可以写编译器
    想搞汇编 可以买块板子搞 更有成就感
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1266 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:50 · PVG 07:50 · LAX 15:50 · JFK 18:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.