ARM复习资料.docx
- 文档编号:25459776
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:26
- 大小:27.75KB
ARM复习资料.docx
《ARM复习资料.docx》由会员分享,可在线阅读,更多相关《ARM复习资料.docx(26页珍藏版)》请在冰豆网上搜索。
ARM复习资料
一、绪论复习题
1、嵌入式实时操作系统有哪些特点?
答:
主要有三个特点:
(1)采用抢占式的调度策略,任务的实时性好,并且执行时间是确定的;
(2)具有可裁剪性(根据任务的需要与否进行添加或删除操作系统模块)和可移植性(移植到各种处理器上);
(3)具有较好的可靠性和可扩展性,适合嵌入式产品的应用开发。
2、对于嵌入式系统,IEEE的定义是什么?
答:
用来控制或监视机器、装置或工厂等大规模系统的设备。
3、对于嵌入式系统,国内普遍认同的定义是什么?
答:
嵌入式系统是“以应用为中心,以计算机技术为基础,软硬件可裁减,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专业计算机系统”。
嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。
4、什么是嵌入式实时操作系统?
答:
嵌入式实时操作系统是指在限定的时间内对输入进行快速处理并作出响应的嵌入式操作系统。
5、嵌入式系统主要有五个方面的特点,分别是什么?
答:
(1)嵌入式系统是面向具体应用的产品;
(2)嵌入式软件特征,具有实时性,高质量、高可靠,程序固化;(3)需要软硬件开发工具和系统软件;(4)需要应用专家参与开发;(5)嵌入式系统分散而不可垄断。
6、什么是实时系统?
答:
能够对外部事件做出及时响应的系统。
响应时间要有保证。
外部事件发生时要识别出来,在给定时间约束内必须输出结果。
7、什么是硬实时系统?
答:
对系统响应时间有严格的要求,如果系统响应时间不能满足,就会引起系统崩溃或致命的错误。
8、什么是软实时系统?
答:
对系统响应时间有要求,但是如果系统响应时间不能满足,它并不会导致系统出现致命的错误或崩溃,只是降低系统的吞吐量。
9、按系统实时性要求嵌入式系统可以分为哪几类?
试举例说明。
答:
1、非实时系统(PDA);2、软实时系统(消费类产品);3、硬实时系统(导引头等工业和军工系统)。
10、什么叫ARM?
答:
ARM是AdvanceRISCMachine的缩写,既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。
二、ARM技术与ARM体系结构复习题
1、什么叫流水线方式?
答:
流水线方式是把一个重复的过程分解为若干个子过程,每个子过程可以与其他子过程同时进行。
由于这种工作方式与工厂中的生产流水线十分相似,因此,把它称为流水线工作方式。
2、ARM7采用几级流水线,分别是哪几个阶段?
答:
ARM7采用三级流水线。
分别是取指、译码、执行。
3、ARM9采用几级流水线,分别是哪几个阶段?
答:
ARM9采用五级流水线。
分别是取指、译码、执行、存储器访问、寄存器回写。
需要注意的是,PC指向正被取指的指令而不是正在执行的指令。
4、在ARM9TDMI“9TDMI”的含义是什么?
答:
9:
采用版本为9的ARM微处理器T:
支持16为压缩指令集Thumb,称为T变种具D:
支持片上Debug,称为D变种M:
内嵌硬件乘法器Multiplier,称为M变种I:
嵌入式ICE,支持片上断点和调试,称为I变种。
5、ARM处理器的七种工作模式是什么?
答:
七种工作模式分别是用户模式、系统模式、快速中断模式、中断模式、管理模式、中止模式和未定义模式。
6、ARM处理器的异常模式有几种?
分别是什么?
答:
共有5种异常模式,分别是快速中断模式、中断模式、管理模式、中止模式和未定义模式。
7、ARM处理器的特权模式有几种?
分别是什么?
答:
共有6种特权模式,分别是系统模式、快速中断模式、中断模式、管理模式、中止模式和未定义模式。
8、填空题:
ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,其余6个为状态寄存器。
但这些寄存器不能被同时访问,具体哪些寄存器是可编程访问的,取决于微处理器的工作状态及具体的运行模式。
但在任何时间,通用寄存器R0~R14、程序计数器PC以及一个或两个状态寄存器都是可访问的。
9、填空题:
ARM中通用寄存器包括R0~R15,可以分为3类:
未分组寄存器是R0~R7,分组寄存器是R8~R14。
R13一般用作堆栈指针,R14一般为子程序连接寄存器。
用R15作程序计数器。
10、ARM的程序状态寄存器为CPSR和SPSR。
各位的含义是什么?
答:
3130292827…876543210
NZCV(保留)IFTM4M3M2M1M0
条件码标志位的意义:
N:
正负号/大小标志位
0表示:
正数/大于;1表示:
负数/小于
Z:
零标志位
0表示:
结果不为零;1表示:
结果为零/相等
C:
进位/借位/移出位
0表示:
未进位/借位/移出0;1表示:
进位/未借位/移出1
V:
溢出标志位
0表示:
结果未溢出;1表示:
结果溢出
控制位:
I、F中断控制位——控制允许和禁止中断
•I=1禁止IRQ中断I=0允许IRQ中断
•F=1禁止FIQ中断F=0允许FIQ中断
T控制(标志)位——反映处理器的运行状态
•T=1时,程序运行于Thumb状态
•T=0时,程序运行于ARM状态
M控制位——决定了处理器的运行模式
•当发生异常时这些位被改变。
•如果处理器运行在特权模式,这些位也可以由程序修改。
11、什么叫ARM异常?
答:
异常是处理器需要中止指令正常执行的任何情形并转向相应的处理,包括ARM内核复位,取指或存储器访问失败,遇到未定义指令,执行软件中断指令,或者出现外部中断(包括FIQ和IRQ)等。
12、什么叫异常处理程序?
答:
大多数异常都对应一个软件的异常处理程序,也就是在异常发生时执行的软件程序。
13、ARM异常分为哪几类?
答:
ARM处理器的异常分为数据中止、快速中断请求、普通中断请求、预取指中止、软件中断、复位及未定义指令共7种。
14、什么是复位异常?
复位异常处理程序主要做哪些工作?
答:
ARM处理器被复位时产生复位异常。
复位异常处理程序主要的工作包括:
对异常处理程序和系统进行初始化(包括配置储存器和Cache)。
同时要保证在IRQ和FIQ中断允许之前初始化外部中断源,避免在没有设置好相应的处理程序前产生中断。
还要设置好各种处理器模式的堆栈指针。
复位异常自动进入管理模式,通常不需要返回。
15、ARM未定义指令异常产生的原因有哪些?
答:
未定义指令异常进入未定义指令模式,产生原因可能有以下三个:
①ARM试图执行一条真正的未定义指令;
②ARM遇到一条协处理器指令,可是系统中协处理器硬件并不存在;
③ARM遇到一条协处理器指令,系统中协处理器硬件也存在,可是ARM不是在超级用户模式。
16、未定义指令异常产生时的解决方法有哪些?
答:
有三种解决方法,分别是:
①在处理程序中执行软协处理器仿真;
②禁止在非超级用户模式下操作;
③报告错误并退出。
17、数据中止异常产生的原因是什么?
答:
指示访问了无效的存储器地址,或者当前代码没有正确的数据访问权限。
数据终止异常进入中止模式。
18、指令预取中止异常产生的原因是什么?
答:
由于处理器预取的指令地址不存在,或者地址无法访问,当被预取的指令执行时,发生预取指中止异常。
指令预取中止异常进入中止模式。
19、当异常产生时,ARM处理器会完成哪些工作?
答:
当异常产生时,ARMcore自动完成以下工作:
①拷贝CPSR到SPSR_
②设置适当的CPSR位:
改变处理器状态进入ARM状态
改变处理器模式进入相应的异常模式
设置中断禁止位禁止相应中断(如果需要)
③保存返回地址到LR_
④设置PC为相应的异常向量
20、当ARM处理器从异常服务程序返回时,程序需要完成哪些工作?
答:
异常返回时,程序需要完成以下工作:
①从SPSR_
②从LR_
Note:
这些操作只能在ARM状态执行.
21、各种异常的返回方式分别是什么?
答:
从SWI和Undef异常返回
MOVSpc,lr
从FIQ,IRQ和预取异常(PrefectAbort)返回
SUBSpc,lr,#4
从数据异常(DataAbort)返回
SUBSpc,lr,#8
22、什么叫字对齐?
答:
字对齐即字单元地址的低两位A1A0=0b00。
即地址末位为0x0,0x4,0x8,0xc。
23、什么叫半字对齐?
答:
半字对齐即单元地址的最低位A0=0b0(地址末位为0x0,0x2,0x4,0x6,0x8,0xa,0xc,0xe)。
24、什么叫大端模式?
答:
字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。
25、什么叫小端模式?
答:
低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。
缺省设置为小端格式。
26、简述ARM体系结构中程序状态寄存器的功能。
答:
1、保存ALU中当前的操作信息;2、控制允许和禁止中断;3、设置处理器的运行模式。
27、ARM处理器的工作模式有(C)种。
A.5B.6C.7D.8
28、下列CPSR寄存器标志位的作用说法错误的是(D)。
A.N:
负数B.Z:
零C.C:
进位D.V:
借位
29、ARM寄存器组有(D)个寄存器。
A.7B.32C.6D.37
30、ARM指令集是(D)位的。
A.8B.16C.24D.32
31、Thumb指令集是(B)位的。
A.8B.16C.24D.32
32、FIQ中断的入口地址是(A)。
A.0x0000001CB.0x00000008C.0x00000018D.0x00000014
33、IRQ中断的入口地址是(C)。
A.0x00000000B.0x00000008C.0x00000018D.0x00000014
34、在用ARM汇编语言编程时,部分寄存器有别名,通常PC是指(D)。
A.R12B.R13C.R14D.R15
34、在用ARM汇编语言编程时,部分寄存器有别名,通常LR是指(C)。
A.R12B.R13C.R14D.R15
34、在用ARM汇编语言编程时,部分寄存器有别名,通常SP是指(B)。
A.R12B.R13C.R14D.R15
35、ARM指令集是(D)字节对齐的。
A.1B.2C.3D.4
36、Thumb指令集是(B)字节对齐的。
A.1B.2C.3D.4
37、CPSR寄存器中反映处理器状态的位是(D)
A.J位B.I位C.F位D.T位
38、复位后,ARM处理器处于(B)模式。
A.UserB.SVCC.SystemD.IRQ
39、复位后,ARM处理器处于(C)状态
A.UserB.SVCC.ARMD.Thumb
三、ARM指令集寻址方式寻址方式复习题
1、ARM中合法立即数的构成方式是什么?
答:
每个立即数由一个8位的常数进行32位循环右移偶数位得到,其中循环右移的位数由一个4位二进制的两倍表示。
2、什么叫寄存器间接寻址?
答:
寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。
3、什么叫前变址法?
答:
基地址寄存器中的值和地址偏移量先作加减运算,生成的操作数作为内存访问的地址。
4、什么叫后变址法?
答:
将基地址寄存器中的值直接作为内存访问的地址进行操作,内存访问完毕后基地址寄存器中的值和地址偏移量作加减运算,并更新基地址寄存器。
5、什么叫满堆栈?
答:
当堆栈指针指向最后压入堆栈的数据时,称为满堆栈。
6、什么叫空堆栈?
答:
当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈。
7、什么叫递增堆栈?
答:
当堆栈由低地址向高地址生成时,称为递增堆栈。
8、什么叫递减堆栈?
答:
当堆栈由高地址向低地址生成时,称为递减堆栈。
9、给出指令,要求写出指令的功能;或者给出要实现的功能,要求写出相应的指令。
指令
功能
MOVR3,R2
R2R3
ADDR0,R1,R2
R1+R2R0
MOVR0,#0xFC0
R0<-0xFC0
MOVR0,R0,LSL#n
R0<-R0*(2n)(n=0~31)
LDRR0,[R1]
R0←[R1]
STRR0,[R1]
[R1]←R0
LDRR0,[R1,#4]
R0←[R1+4]
LDRR0,[R1,#4]!
R0←[R1+4]且R1←R1+4
LDRR0,[R1],#4
R0←[R1]且R1←R1+4
LDRR0,[R1,R2]
R0←[R1+R2]
LDRR0,[R1,#4]
R0←[R1+4]
LDRR0,[R1,#-4]
R0←[R1-4]
LDRR0,[R1,#4]!
R0←[R1+4]且R1←R1+4
LDRR0,[R1],#4
R0←[R1]且R1←R1+4
LDRR0,[R1,R2]
R0←[R1+R2]
LDRR0,[R1,-R2]
R0←[R1-R2]
LDRR0,[R1,R2]!
R0←[R1+R2]且R1←R1+R2
LDRR0,[R1],R2
R0←[R1]且R1←R1+R2
LDRR0,[R1,R2,LSL#2]
R0←[R1+R2*4]
LDRR0,[R1,R2,LSL#2]!
R0←[R1+R2*4]且R1←R1+R2*4
LDRR0,[R1],R2,LSL#2
R0←[R1]且R1←R1+R2*4
LDRSBR0,[R1,#4]
R0←[R1+4]字节单元,并进行符号扩展至32位
LDRHR2,[R1,#-4]
R2←[R1-4]半字单元且R2高16位清零
STRHR0,[R1,#4]!
R0低16位→[R1+4],R1←R1+4
LDRSBR0,[R1],#4
R0←[R1]字节单元,R1←R1+4,R0进行符号扩展至32位
LDRSBR0,[R1,R5]
R0←[R1+R5]字节单元,并进行符号扩展至32位
LDRHR2,[R1,-R5]!
R2←[R1-R5]半字单元,且R2高16位清零
STRHR0,[R1,R5]!
R0低16位→[R1+R5],R1←R1+R5
LDRSHR0,[R1],R5
R0←[R1]字节单元,R1←R1+R5,R0进行符号扩展至32位
10、指令LDRR2,[R3,#128]的寻址方式是(C)。
A.寄存器寻址B.寄存器移位C.变址寻址D.间接寻址
11、假设R1=0x31,R2=0x2,执行指令ADDR0,R1,R2LSL#3后,R0的值是(C)。
A.0x33B.0x34C.0x39D.0x38
12、ADDR0,R1,#3属于(A)寻址方式。
A.立即寻址B.多寄存器寻址C.寄存器直接寻址D.相对寻址
13.下列四个数中,哪一个是合法的立即数?
________。
A.0x101B.0x102C.0xFF1D.0xFF0
答案:
D
14.ARM汇编语言源文件的后缀名是________。
A..sB..aC..cD..h
答案:
A
15.ARM源程序中,C程序文件的后缀名是________。
A..sB..aC..cD..h
答案:
C
16.ARM体系结构定义了7种处理器模式分别是________、________、________、________、________、________和________。
大大提高了ARM处理器的效率。
答:
用户、快中断、中断、管理、终止、未定义、系统模式。
17.ARM处理器有两种工作状态,分别是________和________。
ARM微处理器上电启动时处理________状态。
答:
ARM状态、Thumb状态、ARM。
18.ARM7体系结构采用三级流水线,这三级流水线分别是________、________和________。
答:
取指、译码、执行。
19.ARM微处理器共有________个32位寄存器,其中通用寄存器_______个,状态寄存器_______个。
但这些寄存器不能被同时访问,具体哪些寄存器是可编程访问的,取决于微处理器的工作状态及具体的运行模式。
答:
37、31、6
20.ARM微处理器中,未分组寄存器指的是_______,分组寄存器指的是_______。
答:
R0~R7、R8~R14
21.块拷贝寻址可以把________中的一个数据块加载到多个________中,或者是把多个_______中的内容保存到_______存储器中。
答:
存储器、寄存器、寄存器、存储器
四、ARM指令集系统复习题
1、ARM微处理器的指令可以分为哪几类?
答:
可以分为数据处理指令、跳转指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和杂类指令六大类。
2、假定R1、R0中存放了一个64位二进制数,高32位在R1中;R3、R2中存放了一个64位二进制数,高32位在R3中,试编程实现这两个64位数的加法,结果高位放在R1中,结果低位放在R0中。
答:
ADDSR0,R0,R2
ADCR1,R1,R3
3、假定R1、R0中存放了一个64位二进制数,高32位在R1中;R3、R2中存放了一个64位二进制数,高32位在R3中,试编程实现这两个64位数的减法,结果高位放在R1中,结果低位放在R0中。
答:
SUBSR0,R0,R2
SBCR1,R1,R3
4、假定R1、R0中存放了一个64位二进制数,高32位在R1中;试编程求这个64位数的负数,结果高位放在R5中,结果低位放在R4中。
答:
RSBSR4,R0,#0
RSCR5,R1,#0
5、如何用带PSR操作的批量字数据加载指令实现IRQ中断的返回(假定在进入中断时需要保存R0~R3和LR,其它寄存器不需要保护)?
答:
在进入IRQ中断处理程序时,首先计算返回地址,并保存相关的寄存器
SUBR14,R14,#4;
STMFDR13!
{R0-R3,LR}
如果IRQ中断处理程序返回到被中断的进程则执行下面的指令。
该指令从数据栈中恢复寄存器R0~R3及R12的值,将返回地址传送到PC中,并将SPSR_irq值复制到CPSR中
LDMFDR13!
{R0-R3,PC}^
6、给出指令,要求写出指令的功能;或者给出要实现的功能,要求写出相应的指令。
指令
功能
MOVR1,#0x80
R1←0x80
MOVPC,LR
PC←LR
MOVSR1,R2,LSL#0x02
R1←R2*4,影响N、Z、C位
MVNR1,#0xFF00
R1←0xFFFF00FF
MVNSR1,R2,LSL#0x02
R1←R2*4按位取反,影响N、Z、C位
ADDR0,R1,R2
R0←R1+R2
ADDSR0,R1,#251
R0←R1+251,影响N、Z、C、V位
ADDR0,R2,R3,LSL#1
R0←R2+R3<<1
SUBSR0,R1,R2
R0←R1-R2,更新CPSR
SUBR0,R1,#250
R0←R1-250
SUBR0,R2,R3,LSL#1
R0←R2-R3<<1
RSBR0,R1,R2
R0←R2-R1
RSBR0,R1,#231
R0←231-R1
RSBR0,R2,R3,LSL#1
R0←R3<<1-R2
ANDR0,R0,#0xFF
R0高24位清零
ORRR0,R0,#0xFF
R0低八位置1
EORR0,R0,#0xFF
R0低八位取反
BICR0,R0,#0xFF000000
R0高八位清零
CMPR0,#0xAA
R0-0xAA,设置CPSR
CMPR0,R1
R0-R1,设置CPSR
CMNR0,#0x10
R0+0x10,设置CPSR
TSTR1,#0x80000000
若R1最高位为0,则Z=1
TSTR0,#0xFF
若R0低八位全为0,则Z=1
TEQR0,R1
若R0和R1相等,则Z=1
TEQR3,#0x80000000
若R3和0x80000000相等,则Z=1
MULR0,R1,R2
R0=R1×R2
MULSR3,R2,R1
R3=R2×R1,设置CPSR的N位和Z位
MLAR0,R1,R2,R3
R0=R1×R2+R3
MLASR0,R1,R2,R3
R0=R1×R2+R3,并更新标志位
UMULLR0,R1,R2,R3
(R1,R0)<-R2×R3
UMLALR0,R1,R2,R3
(R1,R0)←R2×R3+(R1,R0)
SMULLR0,R1,R2,R3
(R1,R0)←R2×R3
SMLALR0,R1,R2,R3
(R1,R0)←R2×R3+(R1,R0)
LDREQR0,[R1]
当Z=1时,将存储器地址为R1的字数据读入寄存器R0
LDREQR0,[R1,R2]
当Z=1时,将存储器地址为R1+R2的字数据读入寄存器R0
LDRR0,[R1,#-4]
将存储器地址为R1-4的字数据读入寄存器R0
LDRR0,[R1,R6]!
将存储器地址为R1+R6的字数据读入寄存器R0,
并将新地址为R1+R6写入R1
LDRR0,[R1,#-4]!
将存储器地址为R1-4的字数据读入寄存器R0,
并将新地址为R1-4写入R1
LDRR0,[R1],R2
将存储器地址为R1的字数据读入寄存器R0,
并将新地址为R1+R2写入R1
LDRR0,[R1,R2,LSL#2]!
将存储器地址为R1+R2*4的字数据读入寄存器R0,
并将新地址为R1+R2*4写入R1
LDRR0,[R1],R2,LSL#2
将存储器地址为R1的字数据读入寄存器R0,
并将新地址为R1+R2*4写入R1
STRR0,[R1],#4
将R0中的字数据写入以R1为地址的字存储单元中,
并将新地址R1+4写入R1
STRR0,[R1,#4]
将R0中的字数据写入以R1+4为地址的字存储单元中
STRR0,[R1,#4]!
将R0中的字数据写入以R1+4为地址的存储器中,
并将新地址R1+4写入R1
LDREQBR0,[R1]
当Z=1时,将存储器地址为R1的字节数据单元读入寄存器R0的低8位,高24位清零
LDREQBR0,[R1,R2]
当Z=1时,将存储器地址为R1+R2的字节数据单元读入寄存器R0的低8位,高24位清零
LDRBR0,[R1,#-4]
将存储器地址为R1-4的字节数据单元读入寄存器R0的低8位,高24位清零
LDRBR0,[R1,R6]!
将存储器地址为R1+R6的字节数据单元读入寄存器R0的低
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 复习资料