如何强制gcc生成裸机代码(不要使用伪代码)
我用gcc -S xx.c
GCC一族:move xxx
,但我想真正的指令sll xxx
也许一个简单的问题,但我没有找到在谷歌的答案。
编辑:
GCC想创一个move
的insn,但MIPS没有真正move
,用它sll $x, $x, $0
做move
事情。还用sll $0, $0, $0
来做nop
的事情。
move
是MIPS组装中的pseudo-instruction。这不是一个真正的指令,但汇编程序接受并翻译它。
move $rt, $rs
转换为addi $rt, $rs, 0
。
至于使gcc输出汇编代码没有伪指令,我不认为这是可能的。
是的,我的意思是我想让它像所有的真正insn insn不动,即使它接受它。 – Nybble 2011-06-09 02:05:01
@吴不幸的是,你必须手动翻译它(或者在你的脑海中)。海湾合作委员会产生伪指令,无法关闭此功能。 – 2011-06-09 02:06:46
您能否提供您看到这些说明的代码?被移动的变量的值可能会提示为什么gcc使用“move”而不是“sll” – Gangadhar 2011-06-08 08:56:48
很确定相关命令是'gcc -S xx.c'。这是首都S,而不是小写字母s。这有帮助吗? – susmits 2011-06-08 13:42:01
@susmits:你说得对,谢谢,这是我的打字错误:) – Nybble 2011-06-09 01:58:48