ARM汇编和C语言混合编程中数组的数组的操作

此示例描述a数组中的元素累加的结果,c和b交换的实例:

代码块

例如:

#include <stdio.h>int main (int argc, char **argv)
{int a[4] = {1, 2, 3, 4}; int b;__asm__ ("MOV R1, %1;""LDMIA R1!, {R2-R5};""ADD R2, R2, R3;""ADD R4, R4, R5;""ADD R2, R2, R4;""MOV %0, R2;":"=r"(b):"r"(a));printf ("b = %d\n", b); int c=100,d=200;int result;__asm__ __volatile__("mov %0,%3\n\t"             //%0是一个占位符,表示result,之后的类推"ldr r0,%1\n\t""ldr r1,%2\n\t""str r0,%2\n\t""str r1,%1\n\t":"=r"(result),"+m"(c),"+m"(d)   :"i"(123));printf ("c = %d, d=%d, result=%d\n", c, d, result);int e[4][2] = {{1, 2}, {3, 4}, {5, 6}, {7,8}};int f;int *g; int h;g = &e[3][1];printf ("g=%p, %p\n", g, &e[2][1]);__asm__ __volatile__("MOV R0, %2;""MOV R3, #0;""MOV R4, #0;""MOV R5, %3;""LOOP:;""LDMIA R0!, {R1-R2};""ADD R1, R1, R2;""ADD R3, R3, R1;" //sum=sum+R1"ADD R4, R4, #1;" //i++"CMP R0, R5;""BLE LOOP\n""MOV %0, R3;""MOV %1, R5;":"=r"(f),"=r"(h):"r"(e),"r"(g));  printf ("f = %d, h = %p\n", f, h); return 0;
} /* ----- End of main() ----- */

###浮点运算举例:

    double j=0.001;short int k = 10; double l;asm volatile ("vmov s8, %[k]\n\t""vcvt.f64.s32 d6, s8\n\t""vmul.f64 %P[l], %P[j], d6\n\t": [l] "=w" (l) : [j] "w" (j), [k] "r" (k) : "d8", "s8");  printf ("l = %f\n", l);

###cmp(Compare)比较指令
cmp:把一个寄存器的内容和另一个寄存器的内容或立即数进行比较。但不存储结果,只是正确的更改标志。
一般 cmp 做完判断后会进行跳转,后面通常会跟上B指令。

BL 标号:跳转到标号处执行
B.LT 标号:比较结果是小于(less than),执行标号,否则不跳转;
B.LE 标号:比较结果是小于等于(less than or equal to),执行标号,否则不跳转;
B.GT 标号:比较结果是大于(greater than),执行标号,否则不跳转;
B.GE 标号:比较结果是大于等于(greater than or equal to),执行标号,否则不跳转;
B.EQ 标号:比较结果是等于,执行标号,否则不跳转;
B.HI 标号:比较结果是无符号大于,执行标号,否则不跳转;

ARM汇编和C语言混合编程中数组的数组的操作相关推荐

  1. arm汇编和c语言混合编程实验报告,arm实验ARM汇编和C语言混合编程.doc

    arm实验ARM汇编和C语言混合编程.doc 成绩辽宁工程技术大学上机实验报告课程名称汇编语言程序设计基于ARM体系结构实验题目ARM汇编和C语言混合编程院系软件学院专业软件工程班级姓名学号实验日期实 ...

  2. 简述arm汇编和c语言混合编程,ARM汇编C语言混合编程

    3.4 ARM汇编&C语言混合编程 3.4.1 C内联ARM汇编 先看一个例子: # cat add.c 1 // add.c for s3c2410c board 2 // arm-linu ...

  3. arm汇编和c语言混合编程实验报告,实验三C语言和ARM汇编混合编程指导书.doc

    实验三C语言和ARM汇编混合编程指导书 实验三 1. 实验目的 掌握C语言和ARM汇编混合编程方法. 2. 实验设备 硬件:PC 机 一台 软件:Windows98/XP/2000 系统,ADS 1. ...

  4. 汇编和c语言混合编程缺点,汇编C语言混合编程经验总结

    ARM汇编语言和C语言混合编程 ATPCS规灾了一种模块化设计的观念,其基本内容是C模块(函数)和汇编模块(函数)相互的一套规?中还有类似的一套规晕腋芯谙呋惚喙δ芮看用有很多忌讳),厅知道(很寄几它/ ...

  5. 51汇编与c语言混合编程,C51与汇编混合编程详解

    C51与汇编混合编程详解 0750long | 2009-07-09 12:45:42    阅读:1257 发布文章 C51与汇编混合编程详解 C51和汇编混合编程(1)-C语言中嵌入汇编 1.在 ...

  6. linux 64嵌入汇编语言,如何在64位的Linux系统上使用汇编和C语言混合编程

    编译和链接的时候使用的指令:(AMD处理器,64位操作系统) 编译链接指令 1 nasm -f elf foo.s -o foo.o 2 gcc -c bar.c -o bar.o 3 ld -s - ...

  7. 32位汇编第七讲,混合编程,内联汇编

    32位汇编第七讲,混合编程 博客园IBinary原创 QQ:2510908331  博客连接:http://www.cnblogs.com/iBinary/ 转载请注明出处,谢谢 混合编程的概念,有时 ...

  8. VS2017的C#语言与matlab2014A的m语言混合编程的方法

    VS2017的C#语言与matlab2014A的m语言混合编程的方法 摘要: 有两种方法能够实现C#语言调用matlab编写的函数:一种是利用matlab应用类型库直接调用matlab函数:另一种是将 ...

  9. c语言面向对象编程中的类_C ++中的面向对象编程

    c语言面向对象编程中的类 Object oriented programming, OOP for short, aims to implement real world entities like ...

最新文章

  1. svcagent32.exe,javaM.exe木马查杀解决方案 (转Ad0.cn)
  2. 分析 JDK 源码丨Java Thread
  3. 详细设计 英文_人体工程学设计:COMMA感应式无线充电器深度拆解
  4. Javascript中函数中定义变量无var
  5. [bzoj1303][CQOI2009]中位数图
  6. [JLOI2014]松鼠的新家【树上差分】
  7. Go语言编程(七牛云存储团队执笔)
  8. python爬取百度迁徙数据_python爬虫-动态爬取百度迁徙
  9. 微信小程序服务器.net,微信小程序登陆 .net 后端实现
  10. 在哪里可以搜索英文文献?
  11. c语言课程设计家谱管理系统,数据结构-家谱管理系统
  12. 解决Ubuntu系统上网速度慢的问题
  13. Micheal Nielsen's神经网络学习之二
  14. 最新版阿里巴巴Java开发手册(嵩山版)-附免费下载链接
  15. xmapp启动mysql出现Error: MySQL shutdown unexpectedly.
  16. Python学习笔记(三):Conda的使用
  17. SQL server 除法计算百分比
  18. 滑动门技术制作不规则按钮
  19. [原创]从程序员角度分析安徽电信HTTP劫持的无耻行径 – 之深度分析
  20. 分享爬虫的简单知识。附带爬虫案例。

热门文章

  1. 不知道rar、zip压缩包密码?可以试试这个方法,只需2步即可
  2. 三菱plc pwm指令_三菱PLC系列常用指令语言中英详解
  3. win10连接宽带,拨号提示错误720:不能建立到远程计算机的连接,解决方法
  4. msvcp110.dll丢失修复问题,哪种方便比较靠谱?
  5. 在c语言中fun的作用是什么,c语言的fun函数用法
  6. 电子邮件是internet应用中最广泛的服务项目,通常采用的传输协议是?
  7. 开源夏令营《基于HackRF开发GPS信号仿真模拟器》工作总结(三)
  8. 大话西游手游服务端可开服
  9. [含文档+PPT+源码等]精品基于Uniapp+SSM实现的安卓的掌上校园系统[包运行成功]Java毕业设计Android项目源码
  10. 图灵社区一个有关express的系列文章