MDK中嵌入汇编方法

在MDK中编写程序时C代码不能满足我们的需求,需要用到汇编,因此MDK支持C代码中嵌入汇编的功能。

MDK支持两种嵌入汇编的方法:内联嵌入和汇编函数。这两种嵌入汇编的方法均需要用到关键字__asm。

内联嵌入方法:

void name(void)
{
    __asm{
           ;所嵌入的汇编代码
    }       
}

这种嵌入方法支持直接访问C代码中的变量,同时编译器会对此进行相应的优化。

该方法不能直接访问CPU内部寄存器。

汇编函数方法:

__asm void name(void){
     ;所嵌入的汇编代码  
}

这种嵌入方法不能直接访问C代码中的变量,并且函数的返回需自行实现,不过编译器不会对所写汇编代码进行优化。

该方法可访问CPU内部寄存器,可通过操作寄存器读取传入参数,输出返回值。

示例:

内联嵌入

unsigned long func_add(unsigned long a,unsigned long b)
{
        unsigned long c;
        __asm{
                   add c,a,b
        }    
        return c;  
}

汇编函数

__asm unsigned long func_add(unsigned long a,unsigned long b)
{
          add r0,r0,r1
          bx lr
}   

 

posted @ 2020-07-27 12:20  cloneycs  阅读(3232)  评论(0)    收藏  举报