CortexM3指令系统.ppt
《CortexM3指令系统.ppt》由会员分享,可在线阅读,更多相关《CortexM3指令系统.ppt(276页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3章章 Cortex-M3 指令系统指令系统23.1 指令基础3.2 汇编语言3.3 寻址方式3.4 指令集3.1 指令基础3.1.1程序设计语言的层次结构程序设计语言的层次结构3.1.2指令周期和时序指令周期和时序3.1.3程序的执行过程程序的执行过程第第3章章 Cortex-M3 指令系统指令系统用用 户户 层层高高 级级 语语 言言 层层汇汇 编编 语语 言言 层层操操 作作 系系 统统 层层 机机 器器 层层控控 制制 层层数数 字字 电电 路路 层层 应用软件应用软件 系统软件系统软件 软硬件界面软硬件界面物理机物理机虚拟机虚拟机硬件硬件固件固件硬件直接执行硬件直接执行Level
2、 0 (门电路、电子线路门电路、电子线路)Level 1 (微程序或硬布线微程序或硬布线)Level 2 (指令集结构指令集结构ISA)Level 3 (操作系统、库代码操作系统、库代码)Level 4 (汇编语言代码汇编语言代码)Level 5 (C+,Java,等,等)Level 6 (可执行程序可执行程序)3.1.1程序设计语言的层次结构程序设计语言的层次结构计算机程序设计语言的层次结构如图计算机程序设计语言的层次结构如图3-1所示,分为机器所示,分为机器语言级、汇编语言级、高级语言级语言级、汇编语言级、高级语言级。机器语言是与计算机硬件最为密切的一种语言,它由微程机器语言是与计算机硬件
3、最为密切的一种语言,它由微程序解释机器指令。这一级也是硬件级,是软件系统和硬件序解释机器指令。这一级也是硬件级,是软件系统和硬件系统之间的纽带。系统之间的纽带。 图3-1程序设计语言的层次结构为了提高程序设计的效率,提出了汇编语言的概念。将机器码为了提高程序设计的效率,提出了汇编语言的概念。将机器码用指令助记符表示,就比机器语言方便得多。用指令助记符表示,就比机器语言方便得多。汇编语言的编程效率和程序的可读性都有所提高,但汇编语言汇编语言的编程效率和程序的可读性都有所提高,但汇编语言同机器语言非常接近,它的书写风格在很大程度上取决于特定同机器语言非常接近,它的书写风格在很大程度上取决于特定计算
4、机的机器指令,所以它仍然是一种面向机器的语言。计算机的机器指令,所以它仍然是一种面向机器的语言。 3.1.1程序设计语言的层次结构程序设计语言的层次结构7为了更好地进行程序设计,提高程序设计的效率,人们又提出为了更好地进行程序设计,提高程序设计的效率,人们又提出了高级语言程序设计的概念。如了高级语言程序设计的概念。如C、JAVA等,这类高级语言等,这类高级语言对问题的描述十分接近人们的习惯,并且还具有较强的通用性对问题的描述十分接近人们的习惯,并且还具有较强的通用性。这就给程序员带来极大的方便。这就给程序员带来极大的方便。当然这类高级语言在执行前必须转换为汇编语言或其它中间语当然这类高级语言在
5、执行前必须转换为汇编语言或其它中间语言,最终转换为机器语言。通常有两种方法实现这个转换:编言,最终转换为机器语言。通常有两种方法实现这个转换:编译或解释。译或解释。3.1.1程序设计语言的层次结构程序设计语言的层次结构第第3章章 Cortex-M3 指令系统指令系统高级语言(高级语言(High Level Language)n面向问题的程序设计语言汇编语言(汇编语言(Assembly Language)n将机器指令用助记符号代替而形成的一种语言n本质上是机器语言n优势:可以直接、有效地控制计算机硬件,容易产生运行速度快、指令序列短小的高效率目标程序n劣势:与处理器密切有关,需熟悉硬件和细节,编
6、程繁琐,调试、维护、移植困难机器语言(机器语言(Machine Language)n底层的计算机语言,对应机器指令3.1.2 指令周期和时序指令周期和时序指令周期(指令周期(Instruction Cycle):微处理器执行一条指令所需要微处理器执行一条指令所需要的时间的时间。不同指令的指令周期不是等长的不同指令的指令周期不是等长的 。如果要处理的数据在微处理器的寄存器中,则需要的时间短;如果要处理的数据在微处理器的寄存器中,则需要的时间短;如果要处理的数据在存储器或如果要处理的数据在存储器或I/O设备中则需要的时间长设备中则需要的时间长。一般情况下,以访问存储器所需最长的时间来衡量指令周期。
7、一般情况下,以访问存储器所需最长的时间来衡量指令周期。 10举例:以举例:以ARM7微处理器微处理器为例为例,所有存储器的传输周期都可以被,所有存储器的传输周期都可以被归结到以下四种类型之一:归结到以下四种类型之一:(1)不连续周期:不连续周期:ARM请求传输到某个地址或者从某个地址传输请求传输到某个地址或者从某个地址传输,但这个地址跟前一个周期用到的地址没有联系,这种情况所,但这个地址跟前一个周期用到的地址没有联系,这种情况所需的时间称为访问一个非顺序的内存位置的周期,简称为需的时间称为访问一个非顺序的内存位置的周期,简称为N 周周期。期。(2)连续周期:连续周期:ARM请求传输到某个地址或
8、者从某个地址传输,请求传输到某个地址或者从某个地址传输,此地址或者同上一个周期的地址相同或者是上一个周期的地址此地址或者同上一个周期的地址相同或者是上一个周期的地址之后一个字。这种情况所需的时间称为访问一个顺序的内存位之后一个字。这种情况所需的时间称为访问一个顺序的内存位置的周期,简称为置的周期,简称为S 周期。周期。3.1.2 指令周期和时序指令周期和时序(3)内部周期:内部周期:ARM不请求一个传输,因为它执行一个内部功能,不请求一个传输,因为它执行一个内部功能,同时不执行有效的预取。这种情况所需的时间称为内部周期,简同时不执行有效的预取。这种情况所需的时间称为内部周期,简称为称为I 周期
9、。周期。(4)协处理器寄存器传输周期:协处理器寄存器传输周期:ARM希望通过数据总线同协处理器希望通过数据总线同协处理器通信,通信,ARM 与一个协处理器之间在数据总线与一个协处理器之间在数据总线(对于无缓存的对于无缓存的 ARM)或协处理器总线或协处理器总线(对于有缓存的对于有缓存的 ARM)上写传送一个字的周上写传送一个字的周期,简称期,简称C 周期。周期。3.1.2 指令周期和时序指令周期和时序ARM 指令在时序上是指令在时序上是 S、N、I 和和 C 周期的混合。各种类型的周周期的混合。各种类型的周期都必须至少与期都必须至少与 ARM 的时钟周期一样长。的时钟周期一样长。对于典型的对于
10、典型的 SRAM 系统,所有类型的周期是最小长度,内存系统系统,所有类型的周期是最小长度,内存系统也可以伸展它们,如典型的也可以伸展它们,如典型的 DRAM 系统伸展如下:系统伸展如下: N 周期伸展为最小长度的两倍周期伸展为最小长度的两倍,这是因为这是因为 DRAM 在内存访问是非在内存访问是非顺序时要求更长的时间。顺序时要求更长的时间。S 周期通常是最小长度,但有时也会被伸展成周期通常是最小长度,但有时也会被伸展成 N 周期的长度,如周期的长度,如从一个内存从一个内存“行行”的最后一个字移动到下一行的第一个字时。的最后一个字移动到下一行的第一个字时。 I 周期和周期和 C 周期总是最小长度
11、。周期总是最小长度。 3.1.2 指令周期和时序指令周期和时序例如:在例如:在8MHz的的ARM微处理器中,一个微处理器中,一个 S 周期是周期是125ns,而一,而一个个 N 周期是周期是 250ns。一个。一个 8MHz的的ARM微处理器可以与一个给微处理器可以与一个给出出125ns 的的 N 周期的周期的 RAM 系统相连接。系统相连接。处理器的速率是处理器的速率是 8MHz 只是简单的意味着如果你使任何类型的只是简单的意味着如果你使任何类型的周期,在长度上小于周期,在长度上小于 125ns 则它不保证能够工作。则它不保证能够工作。图3-2 存储器访问时序 其中N-cycle比其它的周期
12、长,这考虑了对DRAM的访问时间。 3.1.2 指令周期和时序指令周期和时序3.1.3 程序的执行过程程序的执行过程CPU通过数据总线、地址总线、控制总线和存储器、外部通过数据总线、地址总线、控制总线和存储器、外部I/O设备联系起来。设备联系起来。计算机采取计算机采取“存储程序与程序控制存储程序与程序控制”的工作方式,即事先把的工作方式,即事先把程序加载到计算机的存储器中,当启动运行后,计算机会自程序加载到计算机的存储器中,当启动运行后,计算机会自动按照存储程序的要求进行工作,这称为程序控制。动按照存储程序的要求进行工作,这称为程序控制。 图3-3计算机程序的执行过程3.1.3 程序的执行过程
13、程序的执行过程计算机执行程序是一条指令一条指令地执行。执行一条指令的过计算机执行程序是一条指令一条指令地执行。执行一条指令的过程可分为取指、译码和执行等阶段。程可分为取指、译码和执行等阶段。首先,首先,CPU进入取指阶段,通过控制总线(进入取指阶段,通过控制总线(CB)发出读命令,)发出读命令,并在地址总线上(并在地址总线上(AB)给出所取指令的地址,从存储器中取出)给出所取指令的地址,从存储器中取出的指令代码经过数据总线(的指令代码经过数据总线(DB)送到)送到CPU的指令寄存器中,的指令寄存器中,然后对该指令译码,再转入执行阶段,在这期间,然后对该指令译码,再转入执行阶段,在这期间,CPU
14、执行指令执行指令指定的操作。指定的操作。 3.2 ARM汇编语言汇编语言3.2.1 指令和指令格式指令和指令格式3.2.2 指令的可选后缀指令的可选后缀3.2.3 指令的条件执行指令的条件执行3.2.4 指令分类指令分类3.2.1指令和指令格式1. 指令和指令系统指令和指令系统指令指令:指示计算机进行某种操作的命令指示计算机进行某种操作的命令。 指令系统指令系统:指令的集合。指令的集合。指令系统的功能强弱在很大程度上决定了这类计算机智能的高指令系统的功能强弱在很大程度上决定了这类计算机智能的高低,它集中地反映了微处理器的硬件功能和属性。低,它集中地反映了微处理器的硬件功能和属性。3.2.1指令
15、和指令格式2. 指令的表示方法指令的表示方法从形式上看,从形式上看,ARM指令在机器中的表示格式是用指令在机器中的表示格式是用32位的二进制数位的二进制数表示。如表示。如ARM中有一条指令为:中有一条指令为: ADDEQS R0, R1, #8其二进制代码形式为:其二进制代码形式为:3128 2725 2421 2019161512 110 00000010100100010000000000001000 conedopcode RnRd Op2 ARM指令代码一般可以分为指令代码一般可以分为5个域:个域:第第1个域是个域是4位位31:28的条件码域,的条件码域,4位条件码共有位条件码共有16
16、种组合;种组合;第第2个域是指令代码域个域是指令代码域27:20,除了指令编码外,还包含几个很重除了指令编码外,还包含几个很重要的指令特征和可选后缀的编码;要的指令特征和可选后缀的编码;第第3个域是地址基址个域是地址基址Rn,是,是4位位19:16,为为R0R15共共16个寄存器个寄存器编码;编码;第第4个域是目标或源寄存器个域是目标或源寄存器Rd,是,是4位位15:12,为为R0R15共共16个个寄存器编寄存器编 码;码;第第5个域是地址偏移或操作寄存器、操作数区个域是地址偏移或操作寄存器、操作数区11:0。3.2.1指令和指令格式3. 汇编指令格式汇编指令格式用助记符表示的用助记符表示的A
17、RM指令一般格式如下:指令一般格式如下: S, , 格式中格式中的内容必不可少,的内容必不可少, 中的内容可省略。中的内容可省略。如如是指令助记符,是必须的。而是指令助记符,是必须的。而为指令的执为指令的执行条件,是可选的,缺省的情况下表示使用默认条件行条件,是可选的,缺省的情况下表示使用默认条件AL(无条无条件执行件执行)。3.2.1指令和指令格式 表示操作码,如表示操作码,如ADD表示算术加法。表示算术加法。 表示指令执行的条件域,如表示指令执行的条件域,如EQ、NE等。等。 S决定指令的执行结果是否影响决定指令的执行结果是否影响APSR的值,使用该后缀则的值,使用该后缀则指令执行的结指令
18、执行的结 果影响果影响APSR的值,否则不影响。的值,否则不影响。 表示目的寄存器。表示目的寄存器。 表示第一个操作数,为寄存器。表示第一个操作数,为寄存器。 表示第二个操作数,可以是立即数、寄存器和寄存器移表示第二个操作数,可以是立即数、寄存器和寄存器移位操作数。位操作数。 3.2.1指令和指令格式22例如:例如: 上述指令上述指令ADDEQS R0,R1,#8; 操作码为操作码为ADD, 条件域条件域cond为为EQ, S表示该指令的执行影响表示该指令的执行影响APSR寄存器的值,寄存器的值, 目的寄存器目的寄存器Rd为为R0, 第一个操作数寄存器第一个操作数寄存器Rn为为R1, 第二个操
19、作数第二个操作数OP2为立即数为立即数8。3.2.1指令和指令格式23例例3.1 指令格式举例:指令格式举例: LDR R0,R1 ;读取;读取R1地址上的存储单元的数据到寄存器地址上的存储单元的数据到寄存器R0 BEQ ENDDATA ;条件分支执行指令,执行条件;条件分支执行指令,执行条件EQ,即相,即相等则跳转到等则跳转到ENDDATA处处 ADDS R2,R1,#1 ;寄存器;寄存器R1中的内容加中的内容加1存入寄存器存入寄存器R2,并,并影响影响APSR寄存器的值寄存器的值3.2.1指令和指令格式3.2.2指令的可选后缀指令的可选后缀 1. S后缀后缀 指令中使用指令中使用S后缀时,
20、指令执行后程序状态寄存器的条件标后缀时,指令执行后程序状态寄存器的条件标志位将被刷新,不使用志位将被刷新,不使用S后缀时,指令执行后程序状态寄存后缀时,指令执行后程序状态寄存器的条件标志将不会发生变化。器的条件标志将不会发生变化。 S后缀通常用于对条件进行测试,例如是否有溢出,是否进后缀通常用于对条件进行测试,例如是否有溢出,是否进位等;根据这些变化,就可以进行一些判断,如是否大于,位等;根据这些变化,就可以进行一些判断,如是否大于,是否相等;从而可能影响指令执行的顺序。是否相等;从而可能影响指令执行的顺序。 3.2.2指令的可选后缀指令的可选后缀例例 3.2 假设假设R0=0 x1,R3=0
21、 x3,指令执行之前指令执行之前APSR=nzcvqIFt_SVC,分别执行如下指令分别执行如下指令APSR的值有何变化?的值有何变化? SUB R1,R0,R3 ;R0的值减去的值减去R3的值,结果存入的值,结果存入R1 SUBS R1,R0,R3 ;R0的值减去的值减去R3的值,结果存入的值,结果存入R1,影响,影响标志位。标志位。分析:执行第分析:执行第1条指令对于标志寄存器的值没有任何影响,因此条指令对于标志寄存器的值没有任何影响,因此CPSR的值不变。执行第的值不变。执行第2条指令后条指令后APSR=NzcvqIFt_SVC,因为因为R0的值减去的值减去R3值,结果变成了一个负数,故
22、而值,结果变成了一个负数,故而N被置位了。被置位了。 2. !后缀后缀 如果指令地址表达式中不含!后缀,则基址寄存器中的地址如果指令地址表达式中不含!后缀,则基址寄存器中的地址值不会发生变化。值不会发生变化。 指令中的地址表达式中含有指令中的地址表达式中含有!后缀时,指令执行后,基址寄存后缀时,指令执行后,基址寄存器中的地址值将发生变化,变化的结果如下:器中的地址值将发生变化,变化的结果如下: 基址寄存器中的值(指令执行后)指令执行前的值地址偏移基址寄存器中的值(指令执行后)指令执行前的值地址偏移量量 3.2.2指令的可选后缀指令的可选后缀3.2.2 指令的可选后缀指令的可选后缀例例 3.3
23、分别执行下面两条指令有何区别?分别执行下面两条指令有何区别? LDR R3,R0,#4 LDR R3,R0,#4!分析:在上述指令中,第分析:在上述指令中,第1条指令没有后缀!,指令的结果是把条指令没有后缀!,指令的结果是把R0加加4作为地址指针,把这个指针所指向的地址单元所存储作为地址指针,把这个指针所指向的地址单元所存储的数据读入的数据读入R3,R0的值不变。第的值不变。第2条指令除了实现以上操作条指令除了实现以上操作外,还把外,还把R04的结果送到的结果送到R0中。中。 3.2.2 指令的可选后缀指令的可选后缀使用使用!后缀需要注意如下事项:后缀需要注意如下事项: (1)!后缀必须紧跟在
24、地址表达式后面,而地址表达式要有明确的!后缀必须紧跟在地址表达式后面,而地址表达式要有明确的地址偏移量;地址偏移量;(2)! 后缀不能用于后缀不能用于R15(PC)的后面;的后面;(3)当用在单个地址寄存器后面时,必须确信这个寄存器有隐性的当用在单个地址寄存器后面时,必须确信这个寄存器有隐性的偏移量,例如偏移量,例如“STMDB R1!R3,R5,R7”此时地址基址寄存器此时地址基址寄存器R1的隐性偏移量是的隐性偏移量是4。3.2.3指令的条件执行指令的条件执行程序要执行的指令,均保存在存储器中,当计算机需要执行程序要执行的指令,均保存在存储器中,当计算机需要执行一条指令时,首先产生这条指令的
25、地址,并根据地址号打开一条指令时,首先产生这条指令的地址,并根据地址号打开相应的存储单元,取出指令代码,相应的存储单元,取出指令代码,CPU根据指令代码的要求根据指令代码的要求以及指令中的操作数,去执行相应的操作。以及指令中的操作数,去执行相应的操作。表3-2指令的条件码3.2.3指令的条件执行指令的条件执行例例 3.4 下面三条指令有何区别?下面三条指令有何区别? ADD R4,R3,#1 ADDEQ R4,R3,#1 ADDS R4,R3,#1分析:第分析:第1条指令不带条件标志(无条件条指令不带条件标志(无条件AL),指令的执行不受),指令的执行不受条件标志位的影响,完成加法运算:将条件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CortexM3 指令系统
限制150内