【问题标题】:How to force gcc generate bare asm code (do not use pseudo code)如何强制 gcc 生成裸 asm 代码(不要使用伪代码)
【发布时间】:2011-06-08 08:43:57
【问题描述】:

例如MIPS:

我用gcc -S xx.c

gcc 基因:move xxx

但我想要真正的指导sll xxx

也许是一个简单的问题,但我在 Google 上没有找到答案。

编辑:

gcc 想要生成 move insn,但在 mips 中没有真正的 move ,它使用 sll $x, $x, $0 来做 move 的事情。它还使用sll $0, $0, $0nop 的事情。

【问题讨论】:

  • 您能否提供您看到这些说明的代码?被移动的变量的值可能会提供一个线索,说明为什么 gcc 使用 move 而不是 sll
  • 很确定有问题的命令是gcc -S xx.c。那是大写的 S,而不是小写的 s。这有帮助吗?
  • @susmits:你说得对,谢谢,这是我打字的错误:)

标签: gcc assembly


【解决方案1】:

move 是 MIPS 程序集中的 pseudo-instruction。它不是真正的指令,但汇编器接受并翻译它。

move $rt, $rs 转换为 addi $rt, $rs, 0

至于让gcc输出没有伪指令的汇编代码,我觉得是不可能的。

【讨论】:

  • 是的,我的意思是我希望它像 sll 一样生成所有真实的insn,而不是移动,即使它接受它。
  • @Wu 不幸的是,您必须手动(或在您的脑海中)翻译它。 GCC 产生伪指令,没有办法关闭它。
猜你喜欢
  • 1970-01-01
  • 2016-12-11
  • 2014-01-11
  • 1970-01-01
  • 1970-01-01
  • 2018-08-23
  • 1970-01-01
  • 2014-03-12
  • 2014-07-21
相关资源
最近更新 更多