2011-11-01 43 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

相關問題