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.

....

相关文章
相关标签/搜索