第四章复习修改.docVIP

  • 2
  • 0
  • 约3.37千字
  • 约 7页
  • 2017-09-02 发布于浙江
  • 举报
第四章复习修改

ARM处理器的工作状态?如何进入工作状态? 答:有两种,ARM(32位字对齐)和Thumb(16位半字对齐)。 当ARM微处理器执行32位的ARM指令集时,工作在ARM状态;当ARM微处理器执行16位的Thumb指令集时,工作在Thumb状态。 进入ARM:当操作数状态位(位0)为0,执行BX指令可以从Thumb到ARM切换;进入Thumb:当操作数状态位(位0)为1,执行BX指令可以从ARM到Thumb切换。 ARM处理器支持的7种运行模式? 答:7种模式:用户模式usr、快速中断模式fiq、外部中断模式irq、管理模式svc、系统模式sys、数据终止模式abt、未定义指令中止模式und。 大端格式和小端格式 答:大端格式和小端格式是ARM处理器数据存储格式。小端格式是低地址存放低字节数据,高地址存放高字节数据。如十六制数据从高到设最低低字节(32位)0则在0放44,0x200000001存放33,0x200000002存放22,0放11。即每8位为一个字节,就是说上面16进制为4个字节。每四个字节存放一字数据。 ARM状态下寄存器组织 答:1.通用寄存器R0—R15; 2.状态寄存器; 程序状态寄存器格式。 答:程序状态寄存器有CPSR和SPSR,格式为: N Z C V 保留位 I F T M4 M3 M2 M1 M0 Thumb状态下寄存器组织与ARM状态下寄存器组织的异同; 答:1.ARM和Thumb状态下的R0—R7一样的; 在Thumb中没有R8—R12; ARM 中的R13对应Thumb中的SP; ARM 中的R14对应Thumb中的LR; ARM 中的R15对应Thumb中的PC; 6.ARM 和Thumb中的CPSR和SPSR是一样的; ARM的异常分类及优先级 答:有七种异常并且优先级从高到低为:1.复位;2.数据中止;3.fiq;4.irq;5.指令预取;6.未定义指令;7.软件中断。 ARM异常的响应(四步) 答:1.将下一条指令的地址赋给LR,以便程序从异常返回时能从正确的位置执行; 将CPSR 的值复制给SPSR; 对CPSR进行位操作; 具体为:3.1设置模式位M[4:0],使处理器进入相应的模式; 3.2设置中断标志位M[6],禁止fiq中断; 3.3当进入Reset或者fiq时,还要设置中断标志位M[7],禁止irq中断。 PC强制赋值,使程序从相应的异常向量地址开始执行中断处理程序。 ARM异常返回(四步) 答:1.将那些被修改过的寄存器出栈; 将LR的值减去偏移量赋给PC; 恢复程序状态寄存器的状态,即SPSR_mode复制给CPSR; 清除那些被修改过的中断禁止位。 ARM指令的寻址方式(7种); 答:1.立即寻址;2.寄存器寻址;3.间接寻址;4.基址变址寻址;5.多寄存器寻址;6.堆栈寻址;7.相对寻址。 能够说明寻址指令的含义; MOV与LDR/STR的区别; 答: MOV经常用于在ARM内核中寄存器和寄存器之间或者与立即数之间传递; LDR把存储器中的数据加载到内核中; STR把内核中的数据存储到存储器中。 MRS和MSR指令的用法; 答:MRS R,CPSR/SPSR状态寄存器到通用寄存器的数据传送指令; 用法:1.异常或者进程切换时需要保存C/SPSR的值,读出程序状态寄存器的值然后保存; 2.需要改变C/SPSR的值时,将值给通用寄存器,修改后再写回状态寄存器。 MSR CPSR/SPSR,R通用寄存器到状态寄存器的数据传送指令; 用于恢复或者改变程序状态寄存器的内容。 加法、减法、乘法指令、跳转指令、数据交换指令、移位指令; 答:ADDS,ADC(带进位),SUBS,SBC(带进位),MUL R0,R1,R2;R0=R1*R2 SMULL R0,R1,R2,R3 ;R0=R2*R3的低32位; R1=R2*R3的高32位; SWAP R0,R1,[R2] ;将R2所指存储器中的内容给R0。同时,将R1的字数据给了R2所指存储器的单元。还有SWAPB字节交换。 有符号加法运算结束后CPSR寄存器值为0分析CPSR状态。 答:CPSR寄存器的值化为二进制:0110 0000 0000 0000 0000 0000 0001 0011,故N=0;Z=1;C=1;V=0;I=F=T=0;M[4:0]=10011。 所以结果为零,允许irq和fiq中断,并且为执行了ARM指令,C=0运算结果没有产生进位,V=0计算结果未溢出,处理器模式为管理模式。 用ARM汇编指令写出实现64位加法和64位减法的代码段,使用的寄存器请自行分配。 加S是因为要

文档评论(0)

1亿VIP精品文档

相关文档