您的位置:首页 > 编程语言 > C语言/C++

C语言内嵌汇编(arm-v7)----加减乘移位

2016-02-07 09:13 225 查看
在现代嵌入式操作系统中,汇编语言当然必不可少,汇编语言的优势就是执行速度快。如果在C语言的代码中,在关键的地方内嵌汇编,那么效率将会大大的提高,我们来看看代码:

#include <stdio.h>

int main(void)
{
int a = 10 ;
int b = 20 ;

int addsum ;
int subsum ;
//	int mulsum ;

__asm__ __volatile__ (

//传参
"mov	r0 , %2   \n"    //mov 执行是将第二个操作数移到第一个操作数上
"mov	r1 , %3   \n"

//运算
"mul	r2 , r1 , r0   \n"   //将r1*r0的值赋值给寄存器r2
//	"add	r2 , r1 , r0   \n"   //将r1+r0的值赋值给寄存器r2
"sub	r3 , r1 , r0   \n"   //<span style="font-family: Arial, Helvetica, sans-serif;">将r1-r0的值赋值给寄存器r2</span>

//传参数
"mov	%0 , r2   \n"
"mov	%1 , r3   \n"

//在汇编的代码中,没有除法,除法是一个协处理器的函数

//参数是从上到下,从左到右以零开始自增   %0  %1  %2
:"=r"(addsum),"=r"(subsum)
:"r"(a),"r"(b)
:"r0","r1","r2","r3"
);

printf("a : %d  b :%d  addsum:%d  subsum:%d \n" , a , b , addsum , subsum );
return 0 ;
}
运行结果:

我的运行结果是用了我个人板子上的文件系统来运行的,对于文件系统的搭建,往后会有文章说明

编译器用的是arm-linux-gcc

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: