2010-04-25 106 views
18

有沒有一種簡單的方法(如免費程序),可以將c/C++代碼轉換爲x86程序集?我知道任何c編譯器都做一些非常類似的事情,我可以編譯c代碼,然後反彙編complied可執行文件,但這有點矯枉過正,我只想轉換幾行代碼。簡單的方法將c代碼轉換爲x86程序集?

有誰知道一些程序可以做到這一點?

編輯:我知道海灣合作委員會編譯器這樣做,但它是在AT & T語法,我正在尋找英特爾語法(不知道它是否被稱爲英特爾語法)。 T語法對我來說看起來有點像胡言亂語,一些命令以相反的順序使用操作數,而不是我習慣的方式,它會變得非常混亂。

+8

編譯器正是這麼做的。您的編譯器將提供一個向您顯示彙編器輸出的選項。也許你可能會考慮閱讀它的手冊?我知道這是週末,但真的...... – 2010-04-25 18:19:52

+0

週末漫長的我在哪裏:-) – 2010-04-26 19:01:19

回答

11

海灣合作委員會可以使用-S開關,但它會在& t語法中令人厭惡的醜陋。

+17

但你可以添加'-masm = intel'開關 – 2010-04-26 19:01:47

+1

使用'clang -S -mllvm --x86 -asm- Mac OS X上的syntax = intel' – 2014-08-10 07:14:44

13

如果在命令行上傳遞-S選項,gcc將生成程序集。

Microsoft Visual C++將與/FAs選項一樣。

+0

ms visual C++是否也使用at&t語法或Intel語法? – Bob 2010-04-25 18:26:33

+2

@Bob:VC++發出漂亮的Intel語法程序集。 – 2010-04-25 18:29:59

+1

@Bob:你也可以通過gcc來生成Intel語法程序集:http://stackoverflow.com/questions/199966/how-do-you-use-gcc-to-generate-assembly-code-in- Intel的語法 – 2010-04-25 18:42:19

3

您的編譯器已經按照您的說法進行了操作,並且最有可能在組裝前停止。

對於GCC,添加-S標誌。

gcc -S x.c 
cat x.s 

編輯:如果你的程序是很短的,你可以在https://gcc.godbolt.org/使用在線服務。

7

lcc編譯器是一個多平臺交叉編譯器。你可以得到它的

lcc -S -Wf-target=x86/win32 foo.c 

產生Intel語法的彙編代碼我從lcc找到彙編代碼顯著更容易比gcc吐出nowawadays閱讀。

0

許多人指出大多數編譯器會這樣做。如果你不喜歡這個語法,那麼awk或sed的一些工作應該能夠翻譯。或者如果沒有一個程序爲你已經寫入某個地方做了那麼一點,我會感到驚訝。

42

GCC使用下面的命令行可以輸出Intel語法組件:

gcc -S input.c -o output.asm -masm=intel 
0

在VC下面的命令可以用於列出的彙編代碼。

cl/FAs a。ç

0

通知 每一個建築都有自己獨特的名字,甚至建立不同 現在,當你知道所涉及的堆棧使用ASM揮發性 將b的完美解決方案