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:待状态切换的跳转指令

 

系统指令

MnemonicInstruction
MSRMove general-purpose register to System Register allows the PE to write an AArch64 System register from a general-purpose register.
MRSMove System Register allows the PE to read an AArch64 System register into a general-purpose register.
SVCSupervisor Call causes an exception to be taken to EL1.
NOPNo Operation does nothing, other than advance the value of the program counter by 4. This instruction can be used for instruction alignment purposes.


©著作权归作者所有:来自51CTO博客作者wx607823dfcf6a9的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 第2部分- Linux ARM汇编ARM指令集变化和优势
  2. 第11部分- Linux ARM汇编 执行分支
  3. 第9部分- Linux ARM汇编 语法
  4. 第12部分- Linux ARM汇编 控制指令
  5. Nodejs 开发CLI必备基础依赖库
  6. volatile关键字?MESI协议?指令重排?内存屏障?这都是啥玩意
  7. 工作常用的git指令
  8. mongodb的指令集
  9. 3分钟掌握思科路由器密码破解

随机推荐

  1. Android API Guides--Application Fundam
  2. android最佳实践(二)
  3. android 编程基础
  4. cocos2dx打包Android出现“未指定Android
  5. Android单元测试(七):Robolectric,在JVM上调
  6. Android多分辨率适配框架(1)— 核心基础
  7. Android(安卓)Studio3.3打开Android(安卓
  8. android:radius设置圆角失败的问题
  9. Android进阶——Android视图工作机制之me
  10. Android 模拟器安装及使用教程