第6部分- Linux ARM汇编 指令集概要
2021/4/16 7:26:36
本文主要是介绍第6部分- Linux ARM汇编 指令集概要,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
ARM指令集可以分为跳转指令、数据处理指令、程序状态寄存器传输指令、Load/Store指令、协处理器指令和异常中断产生指令6类。
ARM指令长为固定的32位。典型的ARM指令编码格式如下:
Opcode:指令操作符编码
Cond是指令执行的条件编码
S是决定指令的操作是否影响CPSR的值
Rd目标寄存器编码
Rn包含第一个操作数的寄存器编码
Shifter_operand:表示第2个操作数。
条件码
条件码cond是4位。
参考:
developer.arm.com/docs/den002…
ARM指令的寻址方式
主要有如下几种:
- 数据处理指令的操作数的寻址方式
- 字及无符号字节的Load/Store指令的寻址方式
- 杂类Load/Store指令的寻址方式
- 批量Load/Store指令的寻址方式
- 协处理器Load/Store指令的寻址方式。
存储访问指令:
LDR
从存储器中加载数据到寄存器。
STR
存储数据到指定的存储单元。
LDM
从指定的存储单元加载多个数据到一个寄存器列表。
STM
将一个寄存器列表的数据的数据存储到指定的存储单元。
PUSH
将寄存器推入满递减堆栈。
POP
从递减堆栈中弹出数据到寄存器。
SWP
用于寄存器和存储器之间的数据交换。
ADD示例
这个在32可以运行,如果是64位前提是bx lr需要替换。
as -g -o add.o add.s
gcc -o add add.o
64位如下:
as -g -o add.o add.s
gcc -o add add.o
跳转指令
ARM中有两种方式可以实现程序的跳转:
- 跳转指令
- 直接向PC寄存器(R15)中写入目标地址值。
直接向PC寄存器中写入目标地址值,可以实现在4GB的地址空间中任意跳转,这种跳转指令又称为长跳转。
还可以从当前指令向前或向后32MB的地址空间跳转。跳转指令有如下4种:
B:跳转指令
BL:待返回的跳转指令
BLX:带返回和状态切换的跳转指令
BX:待状态切换的跳转指令
系统指令
Mnemonic | Instruction |
---|---|
MSR | Move general-purpose register to System Register allows the PE to write an AArch64 System register from a general-purpose register. |
MRS | Move System Register allows the PE to read an AArch64 System register into a general-purpose register. |
SVC | Supervisor Call causes an exception to be taken to EL1. |
NOP | No Operation does nothing, other than advance the value of the program counter by 4. This instruction can be used for instruction alignment purposes. |
这篇关于第6部分- Linux ARM汇编 指令集概要的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23linux 系统宝塔查看网站访问的命令是什么?-icode9专业技术文章分享
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南