ARM文件类型
*.c,C语言
*.s,汇编
ARM指令集
分为16位thumb指令集与32位ARM指令集
;注释,end结束
ARM每条指令4字节长度
ARM指令分为目的操作数,第一第二操作数
第二操作数12位,三种形式
ARM寻址方式
这个简单,和微机原理机组差不多。
阅读多为右往左读。
eg:
add r0,r1,r2
r1+r2放入r0
第一位为目的寄存器,后两个为操作数
位移寻址是特有,先进性位移操作
带【】了就是寄存器存的内存的地址
基址寻址就先算括号里的
PC+偏移
-表示至
ARM指令集
- 传送指令
注意左移即乘法,右移即除法
- 逻辑运算
EOR异或
左移三位就是把3左移三位
本质就是取反
与
- 比较指令
ARM乘法指令
-
32位
-
32位乘加法
记住顺序
ARM分支指令
跳转到其他地址
BL可以调用子程序
BX就是切换arm与thumb的。0位ARM,1为thumb
MRS
把CPSR,SPSR读入那个寄存器
读写两个字母是反的,注意!
ARM软中断
软中断-SWI
用于用户程序调用操作系统服务
- 切换管理模式
- CPSR->SPSR
- 跳转到中断入口
这个就是微机原理与机组中的几号命令
步骤,第一步用过SPSR判断是ARM还是thumb指令集
第二步通过LR取出地址,thumb16位,ARM32位
第三步读出SWI,分解立即数
ARM寄存器访问指令
ARM7处理器是RISC处理器,对存储器只能加载和存储
- 单寄存器操作
- 多寄存器操作指令
- 但寄存器交换指令
装载:LDR 目标寄存器,源地址
存储:STR 源寄存器,目标地址
装载:将操作数的地址字的数据存入R2
存储:将R1的数值存入操作数所指的内存
多寄存器加载,存储
SWP交换指令
读入,输出,目标地址
太绕了太绕了。。哎
LDR可以访问内存,MOV不行
协处理器指令
不会太难了
ARM伪指令
不是指令,但可以被有效替代
注意等于号