没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
ARM 汇编指令详解-Laputa
ARM 汇编指令集 ........................................................................................................... 4
一. 跳转指令 .............................................................................................................. 4
1. B ............................................................................................................................ 4
2. BL ........................................................................................................................... 5
3. BLX......................................................................................................................... 5
4. BX .......................................................................................................................... 5
二. 数据处理指令 ...................................................................................................... 6
5. MOV ...................................................................................................................... 6
6. MVN ...................................................................................................................... 6
7. CMP ....................................................................................................................... 7
8. CMN ...................................................................................................................... 7
9. TST ......................................................................................................................... 8
10. TEQ................................................................................................................. 8
11. ADD ................................................................................................................ 9
12. ADC ................................................................................................................ 9
13. SUB...............................................................................................................10
14. C ...................................................................................................................10
15. R ...................................................................................................................11
16. RSC ...............................................................................................................11
17. AND ..............................................................................................................12
18. ORR ..............................................................................................................12
19. EOR ..............................................................................................................12
20. BIC ................................................................................................................13
三. 法指令与乘加指令 ...........................................................................................13
21. MUL .............................................................................................................13
22. MLA ..............................................................................................................14
23. SMULL ..........................................................................................................14
24. SMLAL ..........................................................................................................15
25. UMULL .........................................................................................................15
26. UMLAL .........................................................................................................16
四. 程序状态寄存器访问指令 ...............................................................................16
27. MRS ..............................................................................................................16
28. MSR ..............................................................................................................17
五. 加载/存储指令 ..................................................................................................18
29. LDR ...............................................................................................................18
30. LDRB.............................................................................................................19
31. LDRH ............................................................................................................19
32. STR ...............................................................................................................20
33. STRB .............................................................................................................20
34. STRH .............................................................................................................21
六. 批量数据加载/存储指令 .................................................................................21
35. LDM(或 STM).........................................................................................21
七. 数据交换指令 ....................................................................................................23
36. SWP ..............................................................................................................23
37. SWPB ...........................................................................................................23
1 / 49
ARM 汇编指令详解-Laputa
八. 移位操作指令 ....................................................................................................24
38. LSL(或 ASL) ............................................................................................24
39. LSR................................................................................................................24
40. ASR ...............................................................................................................24
41. ROR ..............................................................................................................25
42. RRX ...............................................................................................................25
九. 协处理器指令 ....................................................................................................26
43. CDP...............................................................................................................26
44. LDC ...............................................................................................................26
45. STC ...............................................................................................................26
46. MCR .............................................................................................................27
47. MRC .............................................................................................................27
十. 异常产生指令 ....................................................................................................28
48. SWI ...............................................................................................................28
49. BKPT .............................................................................................................28
ARM 汇编器所支持的伪指令 ....................................................................................28
十一. 符号定义(Symbol Definition)伪指令 ...............................................................29
50. GBLA、GBLL 和 GBLS .................................................................................29
51. LCLA、LCLL 和 LCLS ....................................................................................30
52. SETA、SETL 和 SETS ...................................................................................30
53. RLIST ............................................................................................................31
十二. 数据定义(Data Definition)伪指令..............................................................31
54. DCB ..............................................................................................................32
55. DCW(或 DCWU) ....................................................................................32
56. DCD(或 DCDU).......................................................................................32
57. DCFD(或 DCFDU) ...................................................................................33
58. DCFS(或 DCFSU) ....................................................................................33
59. DCQ(或 DCQU) .........................................................................................34
60. SPACE ...........................................................................................................34
61. MAP .............................................................................................................34
62. FILED ............................................................................................................35
十三. 汇编控制(Assembly Control)伪指令 ...............................................................35
63. IF、ELSE、ENDIF ........................................................................................35
64. WHILE、WEND ...........................................................................................36
65. MACRO、MEND .........................................................................................37
66. MEXIT...........................................................................................................38
十四. 其他常用的伪指令 ...........................................................................................38
67. AREA ............................................................................................................38
68. ALIGN ...........................................................................................................39
69. CODE16、CODE32 ......................................................................................39
4、 .............................................................................................................................40
70. END ..............................................................................................................41
71. EQU ..............................................................................................................41
2 / 49
ARM 汇编指令详解-Laputa
72. EXPORT(或 GLOBAL) .............................................................................42
73. IMPORT........................................................................................................42
74. EXTERN ........................................................................................................43
75. GET(或 INCLUDE) ..................................................................................43
76. INCBIN .........................................................................................................44
77. RN ................................................................................................................44
78. ROUT ............................................................................................................45
ARM GNU 常用汇编语言介绍 ....................................................................................45
十五. ARM GNU 常用汇编伪指令介绍 .....................................................................45
79. abort ............................................................................................................45
80. if...else...endif .............................................................................................45
81. include .........................................................................................................46
82. comm ...........................................................................................................46
83. data ..............................................................................................................46
84. equ ...............................................................................................................46
85. global ...........................................................................................................46
86. ascii ..............................................................................................................46
87. byte ..............................................................................................................46
88. short.............................................................................................................47
89. int .................................................................................................................47
90. long ..............................................................................................................47
91. word.............................................................................................................47
92. macro/endm ...............................................................................................47
93. req ................................................................................................................47
94. code .............................................................................................................47
95. ltorg .............................................................................................................47
十六. ARM GNU 专有符号 ..........................................................................................48
十七. 操作码 ................................................................................................................48
十八. 可执行生成说明................................................................................................48
3 / 49
ARM 汇编指令详解-Laputa
ARM 汇编指令集
一. 跳转指令
跳转指令用于实现程序流程的跳转,在 ARM 程序中有两种方法可以实现程
序流程的跳转:
Ⅰ.使用专门的跳转指令。
Ⅱ.直接向程序计数器 PC 写入跳转地址值。
通过向程序计数器 PC 写入跳转地址值,可以实现在 4GB 的地址空间中的任
意跳转,在跳转之前结合使用(MOV LR, PC)等类似指令,可以保存将来的
返回地址值,从而实现在 4GB 连续的线性地址空间的子程序调用。
ARM 指令集中的跳转指令可以完成从当前指令向前或向后的 32MB 的
地址空间的跳转,包括以下 4 条指令:
1. B
B{
条件
}
目标地址
B 指令是最简单的跳转指令。一旦遇到一个 B 指令,ARM 处理器将立即跳
转到给定的目标地址,从那里继续执行。注意存储在跳转指令中的实际值是
相对当前 PC 值的一个偏移量,而不是一个绝对地址,它的值由汇编器来计
算(参考寻址方式中的相对寻址)。它是 24 位有符号数,左移两位后有符
号扩展为 32 位,表示的有效偏移为 26 位(前后 32MB 的地址空间)。
示例指令:
B Label #程序无条件跳转到标号 Label 处执行
CMP R1,#0
4 / 49
ARM 汇编指令详解-Laputa
BEQ Label #当 CPSR 寄存器中的 Z 条件码置位时,程序跳转到标号 Label
处执行
2. BL
BL{
条件
}
目标地址
BL 是另一个跳转指令,但跳转之前,会在寄存器 R14 中保存 PC 的当前内容,
因此,可以通过将 R14 的内容重新加载到 PC 中,来返回到跳转指令之后的
那个指令处执行。该指令是实现子程序调用的一个基本但常用的手段。以下
指令:
#当程序无条件跳转到标号 Label 处执行时,同时将当前的 PC 值保存到 R14
中
BL Label
3. BLX
BLX
目标地址
BLX 指令从 ARM 指令集跳转到指令中所指定的目标地址,并将处理器的工
作状态有 ARM 状态切换到 Thumb 状态,该指令同时将 PC 的当前内容保存
到寄存器 R14 中。因此,当子程序使用 Thumb 指令集,而调用者使用 ARM
指令集时,可以通过 BLX 指令实现子程序的调用和处理器工作状态的切换。
同时,子程序的返回可以通过将寄存器 R14 值复制到 PC 中来完成。
4. BX
BX{
条件
}
目标地址
BX 指令跳转到指令中所指定的目标地址,目标地址处的指令既可以是 ARM
5 / 49
剩余48页未读,继续阅读
资源评论
panyuxiao
- 粉丝: 6
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功