arm知识问答

ARM 187浏览
第1问:arm处理器有那些工作模式
arm处理器工作模式:

1、用户模式(User):非特权模式,正常程序的执行模式。

2、快速中断模式(FIQ):产生FIQ中断时进入该模式。

3、外部中断模式(IRQ):产生IRQ中断时进入该模式。

4、特权模式(SVE):当复位或软中断指令执行时进入该模式

5、数据访问中止模式(ABT):用于虚拟存储和存储保护,存取数据异常时进入该模式。

6、未定义指令中止模式(UND):当执行未定义的指令时进入该模式。

7、系统模式(SYS):使用和User模式相同的寄存器的特权模式。

注意:其中除了用户模式以外,其他的模式都是特权模式

其中除了用户模式和系统模式以外,其他的模式都是异常模式

各种处理器模式下的寄存器

 

寄存器类
寄存器在汇编中的名称
各模式下实际访问的寄存器
用户
系统
管理
中止
未定义
中断
快中断
通用寄存器和程序计数
R0(a1)
R0
R1(a2)
R1
R2(a3)
R2
R3(a4)
R3
R4(v1)
R4
R5(v2)
R5
R6(v3)
R6
R7(v4)
R7
R8(v5)
R8
R8_fiq
R9(SB,v6)
R9
R9_fiq
R10(SL,v7)
R10
R10_fiq
R11(FP,v8)
R11
R11_fiq
R12(IP)
R12
R12_fiq
R13(SP)
R13
R13_svc
R13_abt
R13_und
R13_irq
R13_fiq
R14(LR)
R14
R14_svc
R14_abt
R14_und
R14_irq
R14_fiq
R15(PC)
R15
状态寄存
CPSR
CPSR
SPSR
SPSR_abt
SPSR_abt
SPSR_und
SPSR_irq
SPSR_fiq

第2问:arm核有多少个寄存器?

一共37个,分布看上面表格

r0-r7为通用寄存器

r13 为堆栈sp寄存器

r14 为链接寄存器

r15 为pc计数器

第3问:内存访问各种存储器的速度?

最快的是r0-r15这些寄存器,其后依次是cache、SDRAM、硬盘、网络

第4问:为什么快速中断比普通中断响应要快?

快速中断拥有独立的r8-r12寄存器,这样在模式切换时可以减少寄存器保护的时间,其次是快速中断处理程序可以位于在异常向量表后,这样又可以减少程序跳转时间

第 4 问:为什么程序运行时跳转会影响效率?
程序跳转会影响处理的流水线
 
第5 问:什么情况下才可以发挥cache的作用?
程序的顺序执行或者代码重复执行
 
第 6 问: ARM7和ARM9的差别:
        01、ARM7内核是0.9MIPS/MHz的三级流水线(取指-译码-执行)和冯•诺伊曼结构;ARM9内核是五级流水线(取指-译码-执行-访问内存-写寄存器),提供1.1MIPS/MHz的哈佛结构。
        02、ARM7没有MMU,ARM720T是MMU的;ARM9是有MMU的,ARM940T只有Memory protection unit.不是个完整的MMU。
        03、ARM7TDMI提供了非常好的性能??功耗比。他包含了Thumb指令集快速乘法指令和ICE调试技术的内核。ARM9的时钟频率比ARM7更高,采用哈佛结构区分了数据总线和指令总线。
 
第7 问:处理的流水线的级数会影响到CPU的最高频率吗?
    是的
 第8问:什么是伪指令?
就是不能通过反汇编得到的指令
 
第9问:中断向量表位于存储器什么位置?
0x0和0xffff0000两处
 
第10问:处理中软中断主要用于什么地方?
主要用于操作系统的系统调用
 
第11问 ARM处理器对异常中断的响应过程
答:ARM处理器对异常中断的响应过程如下所述:
        01、保存处理器当前状态、中断屏蔽位及各条件标志位;
        02、设置当前程式状态寄存器CPSR中的相应位;
        03、将寄存器lr_mode设置成返回地址;
        04、将程式计数器值PC,设置成该异常中断的中断向量地址,跳转到相应异常中断处执行。
 
第12问 ARM指令和Thumb指令的差别
答: 在ARM体系结构中,ARM指令集中的指令是32位的指令,其执行效率非常高。对于存储系统数据总线为16位的应用系统,ARM体系提供了Thumb指令集。Thumb指令集是对ARM指令集的一个子集重新编码得到的,指令长度为16位。通常在处理器执行ARM程式时,称处理器处于ARM状态;当处理器执行Thumb程式时,称处理器处于Thumb状态。Thumb指令集并没有改动ARM体系地层的程式设计模型,只是在该模型上加上了一些限制条件。Thumb指令集中的数据处理指令的操作数仍然为32位,指令寻址地址也是32位的。
 
第13问  ARM程式和Thumb程式混合使用的场合
答:通常,Thumb程式比ARM程式更加紧凑,而且对于内存为8位或16位的系统,使用Thumb程式效率更高。不过,在下面一些场合下,程式必须运行在ARM状态,这时就需要混合使用ARM和Thumb程式。
        01、强调速度的场合,应该使用ARM程式;
        02、有些功能只能由ARM程式完成。如:使用或禁止异常中断;
        03、当处理器进入异常中断处理程式时,程式状态转换到ARM状态,即在异常中断处理程式入口的一些指令是ARM指令,然后根据需要程式能转换到Thumb状态,在异常中断程式返回前,程式再转换到ARM状态。
        04、ARM处理器总是从ARM状态开始执行。因而,如果要在调试器中运行Thumb程式,必须为该Thumb程式添加一个ARM程式头,然后再转换到Thumb状态,执行Thumb程式。

第14问:哈佛结构比.诺曼结构优势?

哈佛结构

与冯.诺曼结构处理器比较,哈佛结构处理器有两个明显的特点:

使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;

使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联

第15问:
Q:为什么在中断向量表中不直接LDR PC,"异常地址".而是使用一个标号,然有再在后面
使用DCD 定义这个标号
A:因为LDR 指令只能跳到当前PC 4kB 范围内,而B 指令能跳转到32MB 范围,而现在这样
在LDR PC, "xxxx"这条指令不远处用"xxxx"DCD 定义一个字,而这个字里面存放最终异
常服务程序的地址,这样可以实现4GB 全范围跳转.
Q:LDR 不是可以全空间跳转的吗 《ARM 微控制器基础与实战》程序清单5.3.
A:LDR 伪指令通过设置指令缓冲池才能实现全范围跳转,而LDR 指令则只能实现4KB 范围
跳转.