ARM 汇编语言

1. 什么是汇编语言?

计算机处理器,执行的是 二进制的 10101010001,这些机器码对应的助记符就是汇编指令。

处理器 fetch 到的指令是 1001010101, 可能就是 对应汇编语言中 ADD 的加法指令, 处理器执行 加法操作,并把结果输出到目的寄存器。

ARM (RISC)指令长度固定为 32 bits。

2. ARM 指令集

ARM 指令集可以分为下面六类:

3. 常见 ARM 汇编指令定义:

3.1 MOV 数据传送指令

MOV<cc> <S> Rd, <op1>

Rd 是目的寄存器,<op1> 是操作数。


注意 MOV 指令,op2 如果是 立即数,立即数必须小于 65535(0xFFFF),所以如果给 int i = 0x11111111;ARM 汇编对应的是以下两条指令:

S:0x80002040 : MOV      r1,#0x1111
S:0x80002044 : MOVT     r1,#0x1111


[ARM 官方文档库] http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489c/Cjagdjbf.html

3.2 ADD:

3.3 LDM:

3.4 加载寄存器指令 LDR:

在 ARM 中,word 长度是 32 bits, half word 是 16 bits, Byte 是 8 bits.

 

3.5 数据传送指令 MOV:

3.6 Store 多个 Register 指令 STM:

3.7 Store Register 指令 STR:

 

4.  Offset Addressing & Pre-Index Addressing & Post-Index Addressing

4.1 Offset Addressing:

Offset Addressing 指令例子: LDR R0, [R1, #4] 这种寻址方式,不会改变 Base 寄存器 R1 的值。(只寻址,不改 Base 寄存器)

4.2 Pre-Index Addressing

Pre-Index Addressing 指令例子: LDR R0, [R1, #4]! 这种寻址方式,会改变 Base 寄存器 R1 的值。

先将寻址的内容加载到 R0 寄存器,再将寻址的地址回写到 Base 寄存器 R1。(先寻址,后改 Base 寄存器)

4.3 Post-Index Addressing

Post-Index Addressing 指令例子: LDR R0, [R1], #4 这种寻址方式,会改变 Base 寄存器 R1 的值。

先将 Base 寄存器 R1内容加载到 R0 寄存器,再将寻址的地址回写到 Base 寄存器 R1,(先读 Base 寄存器,后改 Base 寄存器)

[] 内存寻址

5. ARM 指令总结:


 

参考文献:

ARM_AssyLang.pdf

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值