ARM内联汇编

来源:互联网 发布:中国黑科技 知乎 编辑:程序博客网 时间:2024/05/22 12:12
首先,让我们来共同了解一下 GCC 内联汇编的一般格式:
asm(
代码列表
: 输出运算符列表
: 输入运算符列表
: 被更改资源列表
);

在代码列表中,每个汇编语句都要用"  "括起来。

例:
asm(
"add %0,%1,%2\n\t"
"mov r1,%1\n\t"
:"+r"(sum)
:"r"(a),"r"(b)
:"r0"
);

说明:
       
 在 C 代码中嵌入汇编需要使用 asm 关键字,用法asm();
        "  "      引号内部包含的部分是指令部分
                   参数输出部分  函数的返回值
        :            参数输入部分  函数的形参
        :            修饰列表          内联汇编的声明部分,要被更改的资源

1.
        "r"     用寄存器来保存参数
        "i"     是立即数
        "m"   一个有效的内存地址
        "x"    只能做输入

        +  :     表示参数的可读可写
        无:    表示参数只读
        =  :     表示只写
        & :     只能做输出

2. 
    %0  输出列表和输入列表的第1个成员
    %1  输出列表和输入列表的第2个成员
    %2  输出列表和输入列表的第3个成员
   ...  依次类推

3. 冒号部分可以省略,要省略全部省略,否则全部写上

















原创粉丝点击