我有两个要存储在堆栈上的寄存器w1和w2。我希望将完整的word w1和部分w2存储到堆栈中。下面是我的实现:
STR w1, [sp, #-8]!
STRH w2, [sp, #-8]!编译时,第一条指令运行正常,但第二条指令抛出总线错误。我知道这是一些对齐问题,但我不能正确地理解为什么会发生这种情况?
我正在为ARMv8(64位)架构进行编译。
发布于 2016-10-04 05:23:06
根据ARMv8指令集概述,在其他文档中,"...如果将SP用作基址寄存器,则添加任何偏移量之前的堆栈指针的值必须是四字(16字节)对齐的,否则将生成堆栈对齐异常。“
我可以复制你的错误。因此,SP mod 16必须为0。
Bus error (core dumped)https://stackoverflow.com/questions/39631077
复制相似问题