为了账号安全,请及时绑定邮箱和手机立即绑定

对 ARM 寄存器 R10 和 R11 的限制

对 ARM 寄存器 R10 和 R11 的限制

Go
摇曳的蔷薇 2022-08-01 15:15:30
我希望将高度优化的加密ASM实现移植到Go ASM。关于Go Arm Assembly的唯一文档是快速指南,它提到了以下内容:寄存器 R10 和 R11 由编译器和链接器保留。R10指向g(戈鲁汀)结构。在汇编程序源代码中,此指针必须称为 g;无法识别名称 R10。手写汇编可以使用R11,但这样做需要确保链接器也没有使用它来实现函数中的任何其他指令。我希望移植使用的ASM,所以我的问题是:R10R11我可以使用R10/g吗?如果我使用R10 / g,只要我在堆栈上调用开始时存储R10值,然后在结束时加载它,会有任何问题吗?(假设用于停止抢占行为)go:nosplit只要我没有从Go ASM调用任何其他函数,那么我就不必担心链接器对R11的限制,对吗?
查看完整描述

1 回答

?
森栏

TA贡献1810条经验 获得超5个赞

例如,如果您的代码被抢占或发生恐慌,您不应该触摸。我相信指南对此非常清楚。R10

R11链接器用于合成一些指令,例如对全局变量的引用。最好检查是否通过组装然后反汇编代码来使用。在反汇编中,链接器引入的任何引用都应该是可见的。R11R11


查看完整回答
反对 回复 2022-08-01
  • 1 回答
  • 0 关注
  • 278 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号