ARM基础部分解答题
来源:互联网 发布:好办软件是什么 编辑:程序博客网 时间:2024/06/05 20:10
1. 简述ARM发生异常时,ARM核心会自动做哪些事情?从异常返回时,我们要做哪些事情?
当异常产生时, ARM core:
拷贝 CPSR 到 SPSR_<mode>
设置适当的 CPSR 位:
改变处理器状态进入 ARM 状态
改变处理器模式进入相应的异常模式
设置中断禁止位禁止相应中断 (如果需要)
保存返回地址到 LR_<mode>
设置 PC 为相应的异常向量
返回时, 异常处理需要:
从 SPSR_<mode>恢复CPSR
从LR_<mode>恢复PC
Note:这些操作只能在 ARM 态执行.
2. 用ARM汇编指令写出实现64位加法和64位减法的代码段,使用的寄存器请自行分配。
假定低32位数存放在r0和r1里面,高32位数存放在r2和r3里面。
加法:
ADDS r0, r0, r1 //加S是因为要让这个操作影响标志位
ADC r2, r2, r3 //ADC是带进位的加法,如果上一条指令产生进位则一起加进来
减法:
SUBS r0, r0, r1 //加S是因为要让这个操作影响标志位
SBC r2, r2, r3 // SBC是带借位的减法指令
3. 请列举ARM处理器的模式和异常,并说明各个发生异常时ARM处理器所处的模式
异常:
Reset
Data Abort
FIQ
IRQ
Prefetch Abort
SWI
Undefined instruction
处理器模式
User : 非特权模式,大部分任务执行在这种模式}
FIQ : 当一个高优先级(fast)} 中断产生时将会进入这种模式
IRQ : 当一个低优先级(normal) 中断产生时将会进入这种模式}
Supervisor} :当复位或软中断指令执行时将会进入这种模式
Abort : 当存取异常时将会进入这种模式}
Undef :} 当执行未定义指令时会进入这种模式
System : 使用和User模式相同寄存器集的特权模式}
4. FIQ的什么特点使得它处理的速度比IRQ快?
1)FIQ优先级比IRQ高,不会被中断
2)FIQ有自己的专属寄存器:r8~r12,不用对通用寄存器入栈保护,可以加快速度
3)FIQ位于异常向量表的末尾0x1c,故无需跳转,可以在这里直接放置异常处理函数
5. 什么指令可以放在中断向量表?
跳转指令,给PC赋值的指令
B,LDR,MOV
6. ARM处理器 中断向量表位于存储器的什么位置?
默认:0x0
也可以配置成:0Xffff0000
7. 下列 ARM 指令将做什么?
a) LDRH r0,[r1,#6]
b) LDR r0, =0x999
a:将r1寄存器的值加上6,然后把以这个值为地址的内存单元里的值取半字(低16位)赋给r0
b:将立即数0x999赋给r0,注意这是一个伪指令
8. SWP 指令的优势是什么?用来实现什么功能?
功能:在寄存器和存储器之间,由一次存储器读和一次存储器写组成的原子操作。完成一个字节或字的交换。
可以用来实现信号量
9. S3C2410 支持几种引导方式(或者说是内存映射方式)?简述Nand引导方式S3C2410硬件做的事情。
1)nor flash启动方式。
2)nand flash启动方式。
从Nand flash 启动时,S3C2410首先会执行固化在片上ROM中的一段小程序,这段程序负责将nand flash前2K的代码搬移到片上RAM,然后将PC指针指向0x0地址(注意这个时候片上RAM被映射到0x0的起始地址)
10. 简述 static和volatile 关键字的含义和作用。
c语言中static关键字有两个作用,一是文件作用域,二是函数作用域。
文件作用域关键字static的作用是,以static申明的全局变量、函数不得被其他文件所引用
static另外一个用途是函数内部静态变量,只会被初始化一次,而且变量存储在全局数据段中而不是函数栈中,所以其生命期会一直持续到程序退出
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份
- ARM基础部分解答题
- erlang基础练习-编程指南习题部分解答
- 计算机网络习题部分解答
- 《C++语言程序设计》部分习题解答
- 部分HDU分类及解答
- android Animation 基础解答
- ARM基础
- ARM基础
- ARM基础
- ARM基础
- arm基础
- arm基础
- ARM基础
- ARM汇编部分指令
- 基础部分
- 基础部分
- ARM第一部分-ARM体系结构要点总结
- 2012华为校园招聘软件研发上机测试题及部分解答
- 在CentOS 6.3中安装与配置SVN的方法
- POJ2299 树状数组+离散化
- 《因为痛,所以叫青春》感
- md5加密
- C指针原理(60)-Ncurses-文本终端的图形
- ARM基础部分解答题
- 多种js刷新页面的方法
- 【转载】ASP.NET网站限制访问频率
- 程序员2014年未来展望八个小小技巧
- ubuntu 中制作init ramdisk 时候的mkinitrd的问题"mkinitrd command not found"
- 挨踢职场求生法则
- 盗版XP成主要恶意攻击对象
- Linux signals
- 十一、Qt新对话框创建与销毁