C语言内嵌汇编(arm-v7)----加减乘移位
2016-02-07 09:13
225 查看
在现代嵌入式操作系统中,汇编语言当然必不可少,汇编语言的优势就是执行速度快。如果在C语言的代码中,在关键的地方内嵌汇编,那么效率将会大大的提高,我们来看看代码:
我的运行结果是用了我个人板子上的文件系统来运行的,对于文件系统的搭建,往后会有文章说明
编译器用的是arm-linux-gcc
#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
相关文章推荐
- C语言内嵌汇编(arm-v7)----加减乘移位
- C++中#ifndef/#define/#endif使用详解
- c语言:不用if,else语句,也不用循环条件等,输入一个字符,判断是否为大写字母
- C语言的STL 库
- 通过一个小程序看你C语言语法掌握了多少
- C++大牛的博客
- c++中int和string的互转
- c语言。利用交换概览把值从大到小输出
- c++中int a, int *a=new int和 int *a=new int()
- 与字符串有关的一些典型问题的C++解法
- 蓝桥杯 地宫取宝(记忆化搜索)
- C++函数指针与回调函数
- C++基本概念——聊聊C++中的函数匹配那些事儿
- C++ Vector 用法总结
- 链表(C语言实现)
- C字符串练习题心得
- 曾经进公司面试的C语言有关指针和数组的笔试题
- 曾经进公司面试的C语言有关指针和数组的笔试题
- 曾经进公司面试的C语言有关指针和数组的笔试题
- neuq oj 1011 进制转换C++