ARM汇编程序中学ARM程序的结构和混合编程
来源:互联网 发布:开淘宝怎么上传照片 编辑:程序博客网 时间:2024/05/01 18:04
一:ARM汇编程序的结构
例一:
AREAExample,CODE,READONLY; 声明代码段Example ENTRY; 标识程序入口CODE32; 声明32位ARM指令STARTMOVR0,#1MOVR0,#0END;标明程序结束例二:
COUNTEQU0x30003100; 定义一个变量,地址为0x30003100AREAExample,CODE,READONLY; 声明代码段Example ENTRY; 标识程序入口CODE32; 声明32位ARM指令STARTLDRR1,=COUNT; R1 <= COUNTMOVR0,#0; R0 <= 0 STRR0,[R1]; [R1] <= R0,即设置COUNT为0LOOP LDRR1,=COUNTLDRR0,[R1]; R0 <= [R1] ADDR0,R0,#1; R0 <= R0 + 1STRR0,[R1]; [R1] <= R0,即保存COUNTBLOOPEND二:C和ARM汇编的混合编程:
例一:在C语言中混合汇编
#include <stdio.h>void my_strcpy(const char *src, char *dest){char ch;asm{loop: ldrb ch, [src], #1 strb ch, [dest], #1 cmp ch, #0 bne loop}}int main(){char *a = "forget it and move on!";char b[64];my_strcpy(a, b);printf("original: %s", a);printf("copyed: %s",b);return 0;}
例二:在C语言或汇编中调用对方的变量:
AREA asmfile, CODE, READONLYEXPORT asmDoubleIMPORT gVar_1asmDoubleldr r0, =gVar_1ldr r1, [r0]mov r2, #2mul r3, r1, r2str r3, [r0]mov pc, lrEND
#include <stdio.h>int gVar_1 = 12;extern asmDouble(void);int main(){printf("original value of gVar_1 is: %d", gVar_1);asmDouble();printf(" modified value of gVar_1 is: %d", gVar_1);return 0;}
例三:在C语言中调用汇编语言的函数:
AREA asmfile, CODE, READONLYEXPORT asm_strcpyasm_strcpyloop:ldrb r4, [r0], #1cmp r4, #0beq overstrb r4, [r1], #1b loopover:mov pc, lrEND
#include <stdio.h>extern void asm_strcpy(const char *src, char *dest);int main(){ const char *s = "seasons in the sun";char d[32];asm_strcpy(s, d);printf("source: %s", s);printf("destination: %s",d);return 0;}
例四:在汇编语言中调用C语言函数:(略)
0 0
- ARM汇编程序中学ARM程序的结构和混合编程
- arm程序的反汇编程序 试读
- 两种arm汇编程序结构和基本语法
- ARM Bootloader 的实现-------C 和ASM 混合编程
- ARM中C和汇编混合编程
- C和ARM汇编混合编程
- arm汇编和c混合编程
- ARM汇编和C混合编程-笔记
- ARM混合编程
- ARM混合编程笔记
- Nasm 汇编程序和Turboc的C程序混合编程,生成.com程序的方法
- 关于ARM汇编程序的理解
- ARM裸机程序开发16(混合编程)
- arm C、汇编混合编程
- ARM与C混合编程
- ARM C、汇编混合编程
- C程序与汇编程序混合编程
- ARM汇编程序和makefile文件注意事项
- 分布式游戏服务器端框架 Firefly
- 研究相关的博客
- Tomcat 8(八)Tomcat解析server.xml的工具—Digester
- 选择排序
- UNIX LINUX 系统 命令
- ARM汇编程序中学ARM程序的结构和混合编程
- Jquery使用小技巧(1)
- [C++]inline函数
- 数组、List以及Map的遍历
- JDK概述
- B - Break Standard Weight
- 阶乘小结
- shell script 统计文本中字符串的出现的频率及按频率的多少从高到低输出_面试算法题之一
- Node学习笔记——模块和包