2015-10-20 48 views
1

將這個C代碼翻譯成程序集時,只有一件小事情被卡住了。這是我堅持的代碼行。將C程序翻譯成IA32程序集(非常快)

if (input == '\n') 

我的彙編代碼迄今(此行)是

movl input, %eax #%eax = input 
cmpl ___, %eax 

如何比較輸入到 '\ n'?我是直接比較它還是首先將它移入內存?謝謝。

+2

'cc program.c -S && cat program.s'或'cc program.c && objdump -dr a.out' –

+0

什麼意思是「非常快」? –

回答

0

直接比較,cmp允許立即值。

+0

所以它只是: cmpl'\ n',%eax? – flarp

+0

這取決於確切的彙編程序,但通常它應該工作。如果你正在使用GNU',那就是正確的語法。 –

1

嘗試

cmp 0x0D,%eax 

0X0D是回車ASCII碼,或者你可以嘗試的0x0A爲換行符。

+0

@Serge Ballesta對不起,我的壞。 0x0D是回車符,0x0A是換行符。再次抱歉。我把他們混淆在腦海中。 –