我爲x86編寫了一些彙編代碼,並希望通過使用Mac的默認彙編器('as')將它彙編爲純二進制文件(而不是Mach-O)。幾次googlings和嘗試後,我失敗了。是否可以在Mac OS X上使用GNU彙編程序生成純二進制文件?
雖然我知道如何使用NASM(使用選項:-f二進制),但我不想這樣做。因爲我的代碼是寫入的,所以我習慣於使用AT語法。
我爲x86編寫了一些彙編代碼,並希望通過使用Mac的默認彙編器('as')將它彙編爲純二進制文件(而不是Mach-O)。幾次googlings和嘗試後,我失敗了。是否可以在Mac OS X上使用GNU彙編程序生成純二進制文件?
雖然我知道如何使用NASM(使用選項:-f二進制),但我不想這樣做。因爲我的代碼是寫入的,所以我習慣於使用AT語法。
使用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彙編普通二進制]
我覺得這是不容易的與Mac的事,因爲binutils的包含在Xcode開發工具使用修改'as'甚至沒有'objdump'包裝。 – Kilobyte
H毫米,看起來你是對的,對不起。也許[Agner Fogs objconv](http://www.agner.org/optimize/#objconv)可以幫助你,直到我找到更好的東西。 – user786653
謝謝。這是一個偉大的工具,但它似乎不支持根據其說明書的Mach-O和平板二進制格式之間的轉換。或者我錯過了什麼?其實,一個小小的研究後,我發現沒有明顯的方式與Mac的有限的工具來做到這一點,我會嘗試你的第一種方法的某一天通過建立GNU工具鏈的交叉編譯環境。目前,NASM看起來對我來說是最快速的解決方法。 – Kilobyte
可能重複:// stackoverflow.com/questions/6828631/plain-binaries-with-gnu-assembler) –