1、基础知识
(1)、ARM7TDMI中的T、D、M、I的含义是什么?
答:T支持高密度16位的Thumb指令集;D支持片上调试; M支持位乘法;I支持EmbededICE观察硬件;
(2)、ARM7TDMI采用几级流水?使用何种存储器编址方式?
答:三级流水线
存储器编址方式:半字对齐、字对齐
(3)、ARM处理器模式和ARM处理器状态有何区别?
答:ARM7TDMI处理器内核包含2套指令系统,分别为ARM指令集和Thumb指令,并且各自对应1种处理器的状态:
ARM状态:32位,处理器执行字方式的ARM指令,处理器默认为此状态;Thumb状态:16位,处理器执行半字方式的Thumb指令。
ARM体系结构支持7种处理器模式,分别为:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。
(4) 、分别列举ARM的处理器模式和状态?
答:ARM7TDMI处理器内核包含2套指令系统,分别为ARM指令集和Thumb指令,并且各自对应1种处理器的状态:
ARM状态:32位,处理器执行字方式的ARM指令,处理器默认为此状态;
Thumb状态:16位,处理器执行半字方式的Thumb指令。
ARM体系结构支持7种处理器模式,分别为:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。
(5)、PC和LR分别使用哪个寄存器?
答:寄存器R15称为程序计数器(PC),它指向正在“取指”的指令。
寄存器R14称为链接寄存器(LR),在结构上有两个特殊功能:
当使用BL指令调用子程序时,返回地址将自动存入R14中;
当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。
(6)、R13寄存器的通用功能是什么?
答:寄存器R13通常作为堆栈指针(SP),用于保存待使用的寄存器的内容。
(7)、CPSR寄存器中哪些位用来定义处理器状态?
答:寄存器CPSR为当前程序状态寄存器,当控制位T置位时,处理器正在Thumb状态下运行;当控制位T清零时,处理器正在ARM状态下运行。
警告:绝对不要强制改变CPSR寄存器中的控制位T。如果这样做,处理器将进入一个无法预测的状态。
(8)、描述一下如何禁止IRQ和FIQ的中断?答:当控制位I置位时,IRQ中断被禁止;
当控制位F置位时,FIQ中断被禁止。
2、存储器格式
定义R0=0x12345678,假设使用存储指令将R0的值存放在0x4000单元中。如果存储器格式为大端格式,请写出在执行加载指令将存储器
0x4000单元中的内容取出存放到R2寄存器操作后所得R2的值。如果存储器格式改为小端格式,所得的R2值又为多少?低地址0x4000单元的字节内容分别是多少?
答:小端存储0x78、0x56、0x34、0x12,大端存储模式下0x12、0x340、0x56、x78。
R2=0x12345678, R2=0x12345678
存储器 存储器
注意:LPC2000系列ARM指定为小端模式,无论采取任何措施都不可改变。
3、处理器异常
请描述一下ARM7TDMI产生异常的条件是什么?各种异常会使处理器进入哪种模式?进入异常时内核有何操作?各种异常的返回指令又是什么?
答:只要正常的程序流被暂时中止,处理器就进入异常模式。例如在用户模式下执行程序时,当外设向处理器内核发出中断请求导致内核从用户模式切换到异常中断模式。
4、各种异常会使处理器进入哪种模式?
答:软件中断异常(SWI)、 未定义的指令、中止[预取中止、数据中止]、快速中断(FIQ) 、中断(IRQ)、复位
5、进入异常时内核有何操作?
答:(1)、将异常处理程序的返回地址(加固定的偏移量)保存到相应异常模式下的LR;
(2)、将CPSR的当前值保存到相应异常模式下的SPSR;
(3)、设置CPSR为相应的异常模式;
设置PC为相应异常处理程序的中断入口向量地址,跳转到相应的异常中断处理程序执行;
6、各种异常的返回指令又是什么?
答:退出IRQ异常模式 SUBS PC,R14_irq,#4
快速中断请求(FIQ) SUBS PC,R14_fiq,#4
未定义的指令异常 MOVS PC,R14_und
预取指中止 SUBS PC,R14_abt,#4
数据中止 SUBS PC,R14_abt,#8
软件中断异常 MOVS PC,R14_svc下载本文