ARM体系结构
1、 请简述ARM处理器的特点,至少说出5个以上的特点。(5分)
:低功耗;低成本,高性能,RISC结构;指令定长;支持Thumb(16位)/ARM(32位)双指令集;体积小;
2、 请写出ARM内核和ARM SoC处理器的异同,并举例进行说明。(5分)
:ARM内核是ARM SoC处理器中的核心部分,所有ARM SoC都采用ARM的体系结构和指令集,ARM SoC主要是在ARM 内核基础上继承了Memory Controller,Interrtupt Controller,Timer,DMA Controller 以及像 GPIO,USB,IIC,LCD 等外设控制器。
3、 ARM内核有多少种工作模式?请写出这些工作模式的英文缩写。(7分)
:ARM有7种工作模式,usr、sys、svc、irq,abt,und、fiq。
4、 ARM内核有多少个寄存器,请列举出这些寄存器的名字和数量。(5分)
:ARM有37个寄存器,(1)未分组寄存器:R0-R7,共8个;(2)分组寄存器R8-R14,其中FIQ模式下有单独的一组R8-R12共5个,另外6种模式共用一组R8-R12,共5个,USR和SYS模式共用一组R13-R14,共2个,另外5种模式下各有独自的一组R13-R14,共10个;(3)程序计数器PC即R15寄存器,共1个;(4)状态寄存器CPSR,和5个备份状态寄存器SPSR,共6个;ARM总计37个寄存器。
5、 ARM通用寄存器中,有3个寄存器有特殊功能和作用,请写出它们的名字和作用。(6分)
:R13:SP栈指针寄存器,用来保存程序执行时的栈指针位置;R14:LR返回链接寄存器,用来保存程序执行BL指令或模式切换时的返回原程序继续执行的地址;R15:PC程序计数器,保存程序执行的当前地址。
6、 请描述一下CPSR寄存器中相关Bit的情况和作用。(5分)
:条件位(指令进行算术运算后的结果是否有进位,借位等),I位(IRQ异常允许位),F位(FIQ异常允许位),T位(ARM/Thumb工作状态),模式位(处理器工作模式)
7、 请写出以下相关ARM指令语句的注释:(7分)
MOV R0, PC 把PC的值传送到 R0寄存器,此时PC地址为当前指令位置+8
ADD R0, R1, #1 把R1加上1的结果给R0寄存器
LDR R0, =0x56000010 是伪指令,把0x56000010放到R0寄存器中,采用文字池技术。
LDR PC, [PC, #4] 把当前PC值加4位置的内容赋值给PC,实现绝对跳转
MRS R0, CPSR 把CPSR的值传送给R0
BL LOOP 带返回地址的跳转指令,把下一条指令给LR后,跳转到Loop 地址
STMFD R13!,{R0-R12} 压栈指令,把R0到R12寄存器的值通过R13栈指针进行压栈保存,同时这个栈是满递减方式的栈。
8、 什么是立即数?请简要描述立即数在使用时有什么注意要点。(2分)
立即数,主要是指寻址时直接在指令中出现的数,在使用时注意(1)立即数前需要加#(2)ARM指令只有32位长,立即数在指令中占12位存储空间,ARM用这12位空间8位表示有效数字-基数B,4位表示译为的数M,按照把B循环右移M*2位,构造成一个新的32位的数,其它位补0,所以在使用立即数时,要注意其是否合法。
9、 请问BL指令跳转时LR寄存器保存的是什么内容?并请简述原因。(3分)
BL跳转时,LR中保存的是执行BL跳转指令的下一条指令的地址,考虑流水线的情况,即当前的PC