ZHCUAQ1F july 2015 – april 2023
在Example8-1 的 C++ 程序中,asmfunc 的 extern 声明是可选的,因为返回类型是 int。与 C/C++ 函数一样,只有在返回非整数值或传递非整数参数时才需要声明汇编函数。
SP 语义
栈指针必须始终采用 8 字节对齐方式。这是由 C 编译器和运行时支持库中的系统初始化代码自动执行的。任何手写汇编代码(启用了中断,或调用在 C 或线性汇编源中定义的函数)也应在栈上保存 8 字节的倍数。
栈分配
即使编译器保证栈的双字对齐并且栈指针 (SP) 指向栈空间中的下一个空闲位置,但只有足够的保证空间在该位置存储一个 32 位字。被调用函数必须分配空间来存储双字。
__x128_t 类型数据对象的对齐方式(仅限 C6600)
C6600 提供 128 位容器类型 __x128_t。此类型的全局数据对象与 16 字节边界(128 位)对齐。局部 __x128_t 变量在栈上分配,但不一定在 16 字节边界上对齐,因为它们的实际对齐方式取决于栈指针 (SP) 的对齐方式和局部 __x128_t 类型对象的 SP 相对偏移量。编译器将栈与 8 字节边界对齐。