arm c中字節對齊
__align
__align關(guān)鍵字指示編譯器在n字節邊界上對齊變量。
本文引用地址:http://dyxdggzs.com/article/201611/317651.htm__align是一個(gè)存儲類(lèi)修飾符。它不影響函數的類(lèi)型。
語(yǔ)法
__align(n)
其中:
- n
是對齊邊界。
對于局部變量,n值可為 1、2、4 或 8。
對于全局變量,n可以具有最大為 2 的 0x80000000 次冪的任何值。
__align關(guān)鍵字緊靠變量名稱(chēng)前面放置。
用法
如果聲明的變量的常規對齊邊界小于n,__align(n)是非常有用的。八字節對齊方式可以顯著(zhù)提高 VFP 指令的性能。
可以將__align與extern和static一起使用。
限制
由于__align是存儲類(lèi)修飾符,因此不能將其用于:
類(lèi)型,包括typedef和結構定義
函數參數。
只能進(jìn)行過(guò)對齊。也就是說(shuō),可以將兩個(gè)字節的對象按 4 個(gè)字節對齊,而不能將 4 個(gè)字節的對象按兩個(gè)字節對齊。
示例
__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手冊
評論