在使用32位架构的arm64 architecture.Works中运行下面的内联程序集指令时,我会遇到编译错误。
存储指令存储指向变量stack_ptr的堆栈指针(Sp)。
unsigned long stack_ptr = 0;
__asm__ __volatile__("str sp, %[stack_ptr]"
:[stack_ptr]"=m" (stack_ptr) //output operand list
);发布于 2015-08-10 13:12:48
在64位代码中,不能将SP用作STR指令中的操作数。引用文档
在以下说明中,只能将SP用作操作数:
您应该先将其复制到通用寄存器中,然后将其存储到内存中。
除非您需要一个真正精确的值,否则只需使用普通C并获取局部变量本身的地址,以获得堆栈指针的估计值:
unsigned long stack_ptr = (unsigned long)&stack_ptr;https://stackoverflow.com/questions/31915667
复制相似问题