填空题
1.ARM微处理器在较新的体系结构中支持两种指令集:______、______。
答案:ARM指令集、Thumb指令集
2.ARM处理器有9种基本寻址方式,分别是:______、______、______、______、______、______、
______、______、______。
答案:寄存器寻址、立即寻址、寄存器偏移寻址、寄存器间接寻址、基址寻址、多寄存器寻址、堆栈寻址、块拷贝寻址、相对寻址
3.ARM指令集可以分为6类,分别是:______、______、______、______、______、______。
答案:跳转指令、数据处理指令、程序状态寄存器(PSR)传输指令、Load/Store指令、协处理器指令、异常中断产生指令
4.在ARM的汇编程序中,有如下几种伪指令:_____、______、______、______、______。
答案:符号定义伪指令、数据定义伪指令、汇编控制伪指令、宏指令、其他伪指令
5.汇编语言与C/C++的混合编程通常有以下几种方式:_____、______、______。
答案:在C/C++代码中嵌入汇编指令;从汇编程序中访问C程序变量;汇编程序、C/C++程序间的相互调用
6.ARM C/C++编译器支持和产生以下几种格式的文件:_____、____、____、______、______。
答案:filename.c 源文件、filename.h头文件、filename.o目标文件、filename.s汇编代码文件、filename.lst列表文件
问答题:
1.一条典型的ARM指令具有什么样的语法格式,并描述各选项意义。
答:一条典型的ARM指令语法格式如下所示:
<opcode>{<cond>}{S}<Rd>,<Rn>,< shifter_operand >
其中:
opcode是指令操作符编码;
cond 是指令执行的条件编码;
S决定指令的操作是否影响CPSR的值;
Rd是目标寄存器编码;
Rn是包含第1个操作数的寄存器编码;
shifter_operand 表示第2个操作数。
2.表示递增和递减的满堆栈和空堆栈有哪几种组合,请比较它们的特点。
答:有4种类型的堆栈,表示递增和递减的满堆栈和空堆栈的各种组合。
满递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向内含有效数据项的最高地址。指令如LDMFA,STMFA等。
空递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向堆栈上的第一个空地址。指令如LDMEA,STMEA等。
满递减:堆栈通过减小存储器的地址向下增长,堆栈指针指向内含有效数据项的最低地址。指令如LDMFD,STMFD等。
空递增:堆栈通过减小存储器的地址向下增长,堆栈指针指向堆栈下的第一个空地址。指令如LDMED,STMED等。
3.ARM协处理器指令包括哪3类,请描述它们的功能。
答:ARM协处理器指令包括以下3类:
用于ARM处理器初始化ARM协处理器的数据处理操作。
用于ARM处理器的寄存器和ARM协处理器的寄存器间的数据传送操作。
用于在ARM协处理器的寄存器和内存单元之间传送数据。
4.常见的符号定义伪指令,具体有哪几种?
答:常见的符号定义伪指令有如下几种。
用于定义全局变量的GBLA、GBLL和GBLS。
用于定义局部变量的LCLA、LCLL和LCLS。
用于对变量赋值的SETA、SETL、SETS。
为通用寄存器列表定义名称的RLIST。
5.汇编语言程序中常用的符号,需要遵循哪些规则?
答:汇编语言程序中常用的符号,必须遵循以下的约定。
符号区分大小写,同名的大、小写符号会被编译器认为是两个不同的符号。
符号在其作用范围内必须唯一。
自定义的符号名不能与系统的保留字相同。
符号名不应与指令或伪指令同名。
6.可执行映像文件通常由几部分构成,它们有什么特点?
答:可执行映像文件通常由以下几部分构成。
一个或多个代码段,代码段的属性为只读。
零个或多个包含初始化数据的数据段,数据段的属性为可读写。
零个或多个不包含初始化数据的数据段,数据段的属性为可读写。