1. __align(
span
):指示編譯器在
字節邊界上對齊變量。n
對於局部變量,n
值可爲 一、二、4 或 8。.net
對於全局變量,n
能夠具備最大爲 2 的 0x80000000 次冪的任何值。code
__align
關鍵字緊靠變量名稱前面放置。對象
注意事項:blog
只能進行過對齊。也就是說,能夠將兩個字節的對象按 4 個字節對齊,而不能將 4 個字節的對象按兩個字節對齊。get
用法舉例:編譯器
__align(8) char buffer[128]; /* buffer從8字節對齊邊界開始*/ void foo(void) { ... __align(16) int i; /* 這個對齊值是不容許用在局部變量中的*/ ... } __align(16) int i; /* 做爲一個全局變量,這個對齊值是被容許的*/
2. __asm:此關鍵字用於將信息從編譯器傳遞到 ARM 彙編器armasm。asm
用法:編譯
a. 嵌入式彙編器
可使用 __asm
關鍵字聲明或定義嵌入式彙編函數。例如:
__asm void my_strcpy(const char *src, char *dst);
b. 內聯彙編器
可使用 __asm
關鍵字將內聯彙編合併到函數中。例如:
int qadd(int i, int j) { int res; __asm { QADD res, i, j } return res; }
c. 彙編器標籤
可使用 __asm
關鍵字爲 C 符號指定彙編器標籤。例如:
int count __asm__("count_v1"); // export count_v1, not count
d. 已命名的寄存器變量
可使用 __asm
關鍵字聲明已命名的寄存器變量。例如:
register int foo __asm("r0");
3.
4.
5.
....