【发布时间】:2017-12-08 03:42:46
【问题描述】:
在 Matt Godbolt 的 Compiler Explorer 网站上,您可以使用各种预装的编译器来编译代码。当使用PowerPC gcc 4.8 时,寄存器不能与立即数区分开来(例如addi 11,31,16)。
但是,当使用-mregnames 选项时,所有寄存器都标有%r,后跟寄存器索引。 如何仅省略 % 符号以获取 r1 而不是 %r1?
例如void nop () {} with gcc4.8 PowerPC -O0 -mregnames:
nop():
stwu %r1,-16(%r1)
stw %r31,12(%r1)
mr %r31,%r1
addi %r11,%r31,16
lwz %r31,-4(%r11)
mr %r1,%r11
blr
【问题讨论】:
-
如果省略
%,寄存器可能会与符号混淆:) 为什么要这样做?手册似乎没有办法做到这一点。 -
@Jester:我已经习惯在没有它们的情况下阅读汇编
-
如果是供您个人阅读,显然只需搜索和替换
%r[0-9]+即可。 -
@Jester:是的,但这看起来很麻烦,但感谢你的建议,如果这是你能做的最好的事情
-
专业提示:将装配列表发布为 文本,而不是图像。
标签: gcc assembly cpu-registers powerpc