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
}   

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM