- 嵌入式系统分层
- 操作系统的作用:向下管理硬件、向上提供接口(API)
- 操作系统(Linux):
- APP
- Kernel
- Hardware
- 汇编分为六大类
- 数据(通用指令)
- 跳转(通用指令)
- 内存访问(通用指令)
- 状态寄存器传送指令,读写CPSR(非通用指令arm有,c语言没有对应语句)
- 软中断指令SWI(非通用指令arm所特有,在c语言没有对应语句)
- 协处理器指令(非通用指令,arm所特有,在c语言没有对应语句,c语言是通用语言,可以在arm运行,可以在x86运行)
- c语言切换不了cpu模式,所以芯片第一次上电启动初始化都是用汇编写的
- linux也需要一些专用指令,拿汇编来写
- c和汇编的混合编程
- C和汇编的混合编程的原则:在那种情况语言环境下符合哪种语言的语法规则
- 在汇编中将C语言中的函数当作标号处理
- 在C语言中将汇编语言的标号当作函数来处理
- 汇编语言调用(跳转)C语言
- MOV R1,#1
- MOV R2, #2
- BL func_c
- MOV R3,#3
- C语言调用(跳转)汇编语言
- int a;
- a++;
- FUNC_ASM();//需要汇编里面.global FUNC_ASM;导出一下c语言才认识
- a--;
- C内联汇编
- C和汇编的混合编程的原则:在那种情况语言环境下符合哪种语言的语法规则
- ATPCS协议
- arm thumb 程序调用标准
- 协议的主要内容
- 规定栈的种类:
- 使用满减栈
- 寄存器的使用
- R15(PC)程序计数器,只能用于存储程序的指针,不能做其他用途
- R14(链接寄存器),只能用于存储返回地址,不能用作其他用途
- R13(栈指针只能用于存储栈指针,不能做其他用途)
- R0-R3当函数的参数少于4个的时候使用R0-R3传参,多出4个部分用栈传递,函数的返回值使用R0寄存器传递
- 其余寄存器主要用于存储局部变量
- 规定栈的种类:
C和汇编的混合编程
最新推荐文章于 2024-07-07 22:11:09 发布