1、ARM 内核工作模式有哪些,分别是在什么情况下被切换?
ARM内核共有7种。
模式 | 主要触发条件 |
---|---|
User | 从任何异常处理返回。 |
FIQ | 发生高优先级硬件中断。 |
IRQ | 发生普通硬件中断。 |
Supervisor (SVC) | 复位 、执行SVC/SWI指令。 |
Abort | 内存访问失败(指令预取或数据访问)。 |
Undefined | CPU遇到无法识别的指令。 |
System | 通过软件修改CPSR(从其他特权模式切换而来)。 |
2、异常向量表是什么?
这块区域中存放着跳转指令 (或者直接是地址值),这些指令负责在特定的异常 或中断 发生时,引导处理器跳转到对应的异常处理程序的入口地址。
3、什么是立即数?如何判断某数是非法是12位立即数?
判断方法:将其转化为二进制立即数是可以通过右移偶数位操作,可以将前三个字节置零,最后一个字节是存放8字节立即数;
4、b,bl,bx指令的区别是什么?
b是无条件跳转
bl是函数调用,可以将当前位置的pc存放在lr中,便于函数调用后返回(保护和恢复现场)、
bx是跳转到指定寄存器,但是在跳转前,会通过判断该寄存器的最低位,来改变寄存器的状态,如果是1,则为Thumb状态;如果是0,则为arm状态
5、ARM内核采用的栈是哪种栈?
"ARM内核支持多种栈,但现代操作系统在ARM上几乎无一例外地使用满递减栈,并且为每种处理器模式都维护了独立的栈。"