我希望将高度优化的加密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
链接器用于合成一些指令,例如对全局变量的引用。最好检查是否通过组装然后反汇编代码来使用。在反汇编中,链接器引入的任何引用都应该是可见的。R11
R11
- 1 回答
- 0 关注
- 278 浏览
添加回答
举报
0/150
提交
取消