2011-06-08 59 views
1

MIPS:如何強制gcc生成裸機代碼(不要使用僞代碼)

我用gcc -S xx.c

GCC一族:move xxx

,但我想真正的指令sll xxx

也許一個簡單的問題,但我沒有找到在谷歌的答案。

編輯:

GCC想創一個move的insn,但MIPS沒有真正move,用它sll $x, $x, $0move事情。還用sll $0, $0, $0來做nop的事情。

+3

您能否提供您看到這些說明的代碼?被移動的變量的值可能會提示爲什麼gcc使用「move」而不是「sll」 – Gangadhar 2011-06-08 08:56:48

+2

很確定相關命令是'gcc -S xx.c'。這是首都S,而不是小寫字母s。這有幫助嗎? – susmits 2011-06-08 13:42:01

+0

@susmits:你說得對,謝謝,這是我的打字錯誤:) – Nybble 2011-06-09 01:58:48

回答

0

move是MIPS組裝中的pseudo-instruction。這不是一個真正的指令,但彙編程序接受並翻譯它。

move $rt, $rs轉換爲addi $rt, $rs, 0

至於使gcc輸出彙編代碼沒有僞指令,我不認爲這是可能的。

+0

是的,我的意思是我想讓它像所有的真正insn insn不動,即使它接受它。 – Nybble 2011-06-09 02:05:01

+1

@吳不幸的是,你必須手動翻譯它(或者在你的腦海中)。海灣合作委員會產生僞指令,無法關閉此功能。 – 2011-06-09 02:06:46