2011-11-01 64 views
4

我为x86编写了一些汇编代码,并希望通过使用Mac的默认汇编器('as')将它汇编为纯二进制文件(而不是Mach-O)。几次googlings和尝试后,我失败了。是否可以在Mac OS X上使用GNU汇编程序生成纯二进制文件?

虽然我知道如何使用NASM(使用选项:-f二进制),但我不想这样做。因为我的代码是写入的,所以我习惯于使用AT语法。

+0

可能重复:// stackoverflow.com/questions/6828631/plain-binaries-with-gnu-assembler) –

回答

4

使用objcopy(这是的binutils的一部分,是as)与--output-target设置为binary

as --64 test.s -o test.o 
objcopy -O binary test.o test.bin 

而拆卸的输出:

objdump -D -m i386:x86-64:intel -b binary test.bin 

(替代--32和除去x86-64:为32位版本)的(HTTP [与GNU汇编普通二进制]

+0

我觉得这是不容易的与Mac的事,因为binutils的包含在Xcode开发工具使用修改'as'甚至没有'objdump'包装。 – Kilobyte

+0

H毫米,看起来你是对的,对不起。也许[Agner Fogs objconv](http://www.agner.org/optimize/#objconv)可以帮助你,直到我找到更好的东西。 – user786653

+0

谢谢。这是一个伟大的工具,但它似乎不支持根据其说明书的Mach-O和平板二进制格式之间的转换。或者我错过了什么?其实,一个小小的研究后,我发现没有明显的方式与Mac的有限的工具来做到这一点,我会尝试你的第一种方法的某一天通过建立GNU工具链的交叉编译环境。目前,NASM看起来对我来说是最快速的解决方法。 – Kilobyte

相关问题