c程序调用汇编函数
来源:互联网 发布:js 页面加载后 合计 编辑:程序博客网 时间:2024/05/18 01:10
c程序调用汇编函数程序实例:按键控制led灯/************************* main.c**************************/static int (*printf)(const char *format,...) = (int (*)(const char *format,...))0xc3e11ad0void _start(){ printf("%s , %s \n", __FUNCTION__, __LINE__); led_init(); key_init(); while(1) {led_on(key_stat()); } }/************************* led_key.S**************************///转载请注明原文地址:http://blog.csdn.net/oyhb_1992/article/details/77822816#define GPM4CON 0X110002E0#define GPM4DAT 0X110002E4#define GPX3CON 0X11000C60#define GPX3DAT 0X11000c64.global led_initled_init: //GPM4_0~3设为输出 //GPM4CON = (GPM4CON & ~0XFFFF) | 0X1111led_init: ldr r0 , =GPM4CON ldr r1 , [r0] bic r1 , #0xff bic r1 , #0xff00 //0xffff 0x1111都是非法立即数,两种方法,拆开立即数或用伪指令 ldr r2 , #0x1111 orr r1 , r2 str r1 , [r0] mov pc , lr.global key_initkey_init: //GPX3_2~5设为输入 //GPX3CON &= ~(0XFFFF<<8) ldr r0 , =GPX3CON ldr r1 , [r0] bic r1 , #(0xff<<8) bic r1 , #(0xff00<<8) ldr r2 , #0x1111 str r1 , [r0] mov pc , lr.global key_stat key_stat:ldr r0 , =GPM3DAT ldrb r1 , [r0] mov r1 , r1 , lsr #2 and r1 , #0xf mov r0 , r1 //将按键状态stat通过r0传给led_on函数,汇编中函数的返回值是通过r0来传递mov pc , lr.global led_onled_on://点亮led //GPM4DAT = (GPM4DAT & ~0Xf) | (stat & 0xf) ldr r2 , r0 //将函数唯一的参数stat转移到r2里 ldr r0 , =GPM4DAT ldrb r1 , [r0] bic r1 , 0xf orr r1 , r2 //点灯 strb r1 , [r0] mov pc , lr/************************* makefile**************************/TGT := boot.oOBJS := led_key.oOBJC := main.oCROSS_COMPILER := arm-linux-CC := $(CROSS_COMPILER)gcc OBJCOPY := $(CROSS_COMPILER)objcopyCFLAGS := -ffreestandingLDFLAGS : -static -nostartfiles -Ttext=0x40000000all: $(CC) $(CFLAGS) -c $(OBJC:.o=.S) $(OBJC:.o=.c)#替换后缀,编译生成a.out $(CC) $(LDFLAGS) $(OBJC) $(OBJS) #链接,_start在哪个文件里哪个文件链接就放前面 $(OBJCOPY) -O binary a.out $(TGT:.o=.bin) clean:$(RM) a.out $(OBJC) $(TGT:.o=.bin)
阅读全文
0 0
- c程序调用汇编函数
- 汇编函数调用c程序
- c程序调用nasm汇编函数
- 在C程序中调用汇编函数
- C调用汇编函数
- 通过汇编分析c程序函数调用的原理
- VS2017中实现C程序调用汇编函数
- c调用汇编函数(1)
- C程序使用不同函数调用约定调用汇编子过程
- ARM基础:汇编调用C程序
- ARM基础:C程序调用汇编
- 汇编看c之一,简单函数调用
- 从汇编看c语言函数调用
- C于汇编函数的相互调用
- C语言函数调用的汇编实现
- gcc内嵌汇编调用C函数
- 2.1.3 汇编调用C函数
- 汇编和c函数交叉混合调用
- position 定位属性之absolute与fixed的区别
- Linux中buffer cache 与 page cache的区别
- C语言解题出现的提示
- C/C++ 指针函数返回值的一些问题
- java面试题-理论
- c程序调用汇编函数
- HDU 5517 Triple ACM/ICPC 2015 Shenyang(二维树状数组)
- DEV控件编辑框录入内容消失的问题
- 序列化二叉树
- 循环语句
- 【codevs 1036】商务旅行
- 可折叠按钮
- 2018计算机推免生东南大学面试笔试回忆录~
- 阿里云Centos下安装JDK+Tomcat+Mysql步骤详解