-
ARM存储器格式及数据类型
-
ARM处理器中的MMU和MPU
-
ARM 指令分类及指令格式
ARM的存储字格式
1)大端模式
32位数据字的高字节存储在低地址中,数据字的低地址存放在高地址中
一个32位数据字0x12345678存放在起始地址位0x30001000,大端模式下:
0x30001000存放0x12;
0x30001001存放0x34;
…
2)小端模式(系统复位默认小端模式)
32位数据字的高字节存储在高地址中,数据字的低地址存放在低地址中
(ARM 体系结构将存储器看做从0x00000000开始以字节为单位的线性阵列,最大寻址空间为4GB)
ARM数据类型
除Cortex-A50外,32位ARM处理器支持:
字节(6);
半字(16);
字(32)
字需要4字节对齐,地址的低两位为0;半字需要2字节对齐,地址最低位为0
ARM处理器中的MMU和MPU
MMU:存储器管理单元
功能:
1)虚拟地址到物理地址的映射
当使能MMU后,ARM处理器产生的地址是虚拟地址
2)存储器访问权限控制
从TLB中查到地址转换信息和访问权限信息,这些信息被用于:
访问权限控制信息用来控制访问是否被允许;
对没有高速缓存的系统,转换得到的物理地址将被用作访问主存储器的地址
MPU:存储器保护单元
ARM指令分类
所有ARM指令都使用4位条件编码来决定指令是否执行
ARM处理器是RISC结构,无论对外部设备还是系统存储器的访问都需要通过加载/存储指令完成
ARM指令分类:
1)分支指令
2)数据处理指令
3)程序状态存储器CPSR处理指令
4)加载/存储指令
5)协处理器指令
6)异常产生指令
助记符 | 指令功能描述 |
---|---|
ADC | 带进位加法 |
ADD | 加法 |
AND | 逻辑与 |
B | 跳转 |
BIC | 位清零 |
BKPT | 断点中断 |
BL | 带返回跳转 |
BLX | 带返回和状态切换跳转 |
BX | 带状态切换跳转 |
CMP | 比较 |
EOR | 异或 |
MOV | 数据传送 |
MRS | 传送CPSR或SPSR到通用寄存器 |
MSR | 传送通用寄存器到CPSR或SPSR |
ARM指令格式
一般格式:
< opcode >{ < cond > } {S} < Rd>,< Rn>{ ,< op2>}
ARM指令操作数符号:
1)#:立即数
2)0x:十六进制
3)!:更新基址寄存器符号
4)^ :复制SPSR到CPSR
5)-:指示寄存器列表范围
ARM指令中的移位操作符
移位操作符 | 操作含义 |
---|---|
LSL | 逻辑左移 |
ASL | 算术左移 |
LSR | 逻辑右移 |
ASR | 算术右移 |
ROR | 循环右移 |
RRX | 扩展循环右移 |
移位操作格式:
Rm , < opsh >#< shift >