ARM体系结构与接口技术——ARM汇编伪操作与混合编程
2022/4/20 14:13:52
本文主要是介绍ARM体系结构与接口技术——ARM汇编伪操作与混合编程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
伪操作的概念
伪操作与伪指令不同。
伪指令虽然不能生成与机器码映射的机器码,但是能被编译成相应的汇编指令,再编译成机器码。
伪操作不会生成任何指令,只在编译期起作用,用来控制编译器,告诉编译器怎么编译指令。所以不同的编译器,它的伪操作是不一样的。
伪操作的作用类似于C语言的条件编译。
C语言和汇编混合编程
@ 混合编程 .text .global _start _start: MOV R1,#1 MOV R2,#2 BL func_c @ 汇编语言调用C语言 MOV R3,#3 BL STOP .global FUNC_ASM @ global声明让C调用 FUNC_ASM: MOV R4,#4 MOV R5,#5 .global STOP STOP: B STOP .end
void func_c() { int a = 0; a++; /*C语言内嵌汇编代码*/ asm ( "MOV R6, #6\n" "MOV R7, #7\n" ); /*C语言调用汇编*/ FUNC_ASM(); a--; }
ATPCS协议
ATPCS,ARM-THUMB procedure call standard,ARM-Thumb过程调用标准。
规定了所有编译器对C编译成汇编需遵循以下标准:
- 栈的种类
- 使用满减栈
- 寄存器的使用
- R15 只能用于程序计数器PC
- R14 只能用于链接寄存器LR
- R13 只能用于栈指针寄存器SP
- R0-R3 函数调用时,参数小于4个的时候,使用R0-R3传参,多于4个的部分用栈传递
- R0 函数返回时,返回值使用R0传递
- 其余寄存器主要用于存储局部变量
END
这篇关于ARM体系结构与接口技术——ARM汇编伪操作与混合编程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南