如何强制gcc生成裸机代码(不要使用伪代码)

问题描述:

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

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