arm c中字节对齐
__align
__align关键字指示编译器在n字节边界上对齐变量。
本文引用地址:https://www.eepw.com.cn/article/201611/317651.htm__align是一个存储类修饰符。它不影响函数的类型。
语法
__align(n)
其中:
- n
是对齐边界。
对于局部变量,n值可为 1、2、4 或 8。
对于全局变量,n可以具有最大为 2 的 0x80000000 次幂的任何值。
__align关键字紧靠变量名称前面放置。
用法
如果声明的变量的常规对齐边界小于n,__align(n)是非常有用的。八字节对齐方式可以显著提高 VFP 指令的性能。
可以将__align与extern和static一起使用。
限制
由于__align是存储类修饰符,因此不能将其用于:
类型,包括typedef和结构定义
函数参数。
只能进行过对齐。也就是说,可以将两个字节的对象按 4 个字节对齐,而不能将 4 个字节的对象按两个字节对齐。
示例
__align(8) char buffer[128]; // buffer starts on eight-byte boundary
void foo(void){...__align(16) int i; // this alignment value is not permitted for // a local variable...}__align(16) int i; // permitted as a global variable.参考:ARM手册
评论