REQUIRE8
指令指定当前文件要求堆栈八字节对齐。 它设置 REQ8 生成属性以通知链接器。
PRESERVE8
指令指定当前文件保持堆栈八字节对齐。 它设置 PRES8 编译属性以通知链接器。
链接器检查要求堆栈八字节对齐的任何代码是否仅由保持堆栈八字节对齐的代码直接或间接地调用。
如果您的代码保持堆栈八字节对齐,在需要时,可使用 PRESERVE8
设置文件的 PRES8 编译属性。 如果您的代码不保持堆栈八字节对齐,则可使用 PRESERVE8 {FALSE}
确保不设置 PRES8 编译属性。
Note
如果您省略 PRESERVE8
和 PRESERVE8 {FALSE}
,汇编器会检查修改 sp 的指令,以决定是否设置 PRES8 编译属性。 ARM 建议明确指定PRESERVE8
。
您可以通过以下方式启用警告:
armasm --diag_warning 1546
有关详细信息,请参阅命令语法。
您将会收到类似以下警告:
"test.s", line 37: Warning: A1546W: Stack pointer update potentially breaks 8 byte stack alignment 37 00000044 STMFD sp!,{r2,r3,lr}