如何解决为什么编译器使用s0和a0而不是sp进行存储?
这是我编译的程序的一部分。
func:
addi sp,sp,-32
sd ra,24(sp)
sd s0,16(sp)
addi s0,32
sd a0,-24(s0)
ld a0,0(a0)
lb a0,0(a0)
sb a0,-25(s0)
jal x0,LBB0_1
我不明白这句话:
sd a0,0(a0)
为什么它对前两个指令使用s0,然后对后两个指令使用a0,而不是像以前那样使用sp。有没有办法写它,所以它不使用s0 / a0而只使用sp?
解决方法
s0是帧指针。您可能将这两个“无用的”指令ld / st和s0一起使用,因为您在编译时没有进行优化(可以删除这两个指令)。但是,两个使用a0的ld指令取决于您的代码,并且取决于函数func的第一个参数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。