RealView編譯器經常使用特有功能(轉)

源:RealView編譯器經常使用特有功能函數

一. 關鍵字和運算符

1. __align(n):指示編譯器在n 字節邊界上對齊變量spa

       對於局部變量,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.

....

相關文章
相關標籤/搜索