小编Igo*_*lyk的帖子

ARM组装。将r13(堆栈指针)用作通用寄存器是否安全?

我正在编写一个非常优化的叶子函数,为了使其运行更快,我想使用R13作为通用寄存器。在使用R13并将其从功能返回之前,我通过将R13移至VFP寄存器之一来保留它,方法是将其移回。看起来像这样:

/* Start of the function */
push { r4 - r12, r14 }
vmov s0, r13
/* Body of the function. Here I use R13
 * as a general purpose register */
vmov r13, s0
pop { r4 - r12, r14 }
bx lr
Run Code Online (Sandbox Code Playgroud)

而且有效。但是我已经读到某些操作系统假定R13始终用作堆栈指针,并将其用作通用寄存器可能会导致崩溃。我还应该说这个功能只能在Android(Linux)上运行。谢谢!

linux assembly android arm stack-pointer

2
推荐指数
1
解决办法
305
查看次数

标签 统计

android ×1

arm ×1

assembly ×1

linux ×1

stack-pointer ×1