文章目录
1. 常用ARM指令
1.1 跳转指令
-
B:无条件跳转
-
BL:带连接的跳转指令
-
BX:带状态切换的无条件跳转
-
BLX:带链接和状态切换的无条件跳转
例如:
B 0x1234 跳转到绝对地址0x1234的位置执行相应的代码
BL loc_234 跳转到目标loc_234地址去,这条指令一般用于子程序之间的调用
BX R0 跳转到R0寄存器指定的地址,并且根据R0最低位来切换处理器状态
1.2 比较指令
比较指令 | |
---|---|
eq:相等/z=1 | ne:不相等/标志z=0 |
hi:无符号数大于/c=1,z=0 | cs/hs:无符号数大于或等于/c=1 |
cc/lo:无符号数小于/c=0 | ls:无符号数小于或等于/c=0,z=1 |
gt:有符号数大于/z=0,n=v | ge:有符号数大于或等于/n=v |
lt:有符号数小于/n!=v | le:有符号数小于或等于/z=1,n!=v |
mi:负数/n=1 | pl:整数或0/n=0 |
vs:溢出/v=1 | vc:没有溢出 |
2. 寄存器于储存器操作
2.1 寄存器的定义
存储器(主存,内存)
寄存器中放的数据:可以是字符串,可以是数,也可以是一个地址,可以放各种类型的数据。
例如:
地址(如0x00004000)与地址中存在的值
2.2 寄存器常用指令
- LDR:从存储器中加载数据到寄存器 ← Load
例如:
LDR R8,(R9,#4)
R8为待加载数据的寄存器,加载值为R9+0x4所指向的存储单元。
- 把后面的给前面的
- 把方括号里面的整体当做地址
LDR R8,[R9,#4]
解释:将R9+4,取地址里面的值赋值给R8
LDR R8,R9,#4
解释:将R9+4的值赋值给R8
- STR:将寄存器的数据存储到存