汇编及嵌入式C语言-第二章

上传人:xian****812 文档编号:304944467 上传时间:2022-06-06 格式:PPT 页数:128 大小:1.42MB
返回 下载 相关 举报
汇编及嵌入式C语言-第二章_第1页
第1页 / 共128页
汇编及嵌入式C语言-第二章_第2页
第2页 / 共128页
汇编及嵌入式C语言-第二章_第3页
第3页 / 共128页
汇编及嵌入式C语言-第二章_第4页
第4页 / 共128页
汇编及嵌入式C语言-第二章_第5页
第5页 / 共128页
点击查看更多>>
资源描述

《汇编及嵌入式C语言-第二章》由会员分享,可在线阅读,更多相关《汇编及嵌入式C语言-第二章(128页珍藏版)》请在金锄头文库上搜索。

1、ARM处理器处理器及嵌入式及嵌入式C语言语言 第二章第二章 ARM ARM编程模型和指令集介绍编程模型和指令集介绍2.1 2.1 2.1 2.1 ARMARMARMARM编程模型编程模型编程模型编程模型2.1.1 2.1.1 2.1.1 2.1.1 指令长度及数据类型指令长度及数据类型指令长度及数据类型指令长度及数据类型 指令集可以是以下任一种指令集可以是以下任一种指令集可以是以下任一种指令集可以是以下任一种32 bits 32 bits 32 bits 32 bits 长长长长 (ARM(ARM(ARM(ARM状态状态状态状态) ) ) )16 bits 16 bits 16 bits 16

2、 bits 长长长长 (Thumb(Thumb(Thumb(Thumb状态状态状态状态) ) ) )特别说明:特别说明:特别说明:特别说明:ThumbThumbThumbThumb指令集可以看作是指令集可以看作是指令集可以看作是指令集可以看作是ARMARMARMARM指令压缩形式指令压缩形式指令压缩形式指令压缩形式的子集,它是为减小代码量而提出,具有的子集,它是为减小代码量而提出,具有的子集,它是为减小代码量而提出,具有的子集,它是为减小代码量而提出,具有16bit16bit16bit16bit的代码的代码的代码的代码密度。密度。密度。密度。ThumbThumbThumbThumb指令体系并不

3、完整,只支持通用功能,必指令体系并不完整,只支持通用功能,必指令体系并不完整,只支持通用功能,必指令体系并不完整,只支持通用功能,必要时仍需要使用要时仍需要使用要时仍需要使用要时仍需要使用ARMARMARMARM指令,如进入异常时。其指令的指令,如进入异常时。其指令的指令,如进入异常时。其指令的指令,如进入异常时。其指令的格式与使用方式与格式与使用方式与格式与使用方式与格式与使用方式与ARMARMARMARM指令集类似,而且使用并不频繁,指令集类似,而且使用并不频繁,指令集类似,而且使用并不频繁,指令集类似,而且使用并不频繁,ThumbThumbThumbThumb指令集作一般了解。指令集作一

4、般了解。指令集作一般了解。指令集作一般了解。 ARM7TDMI ARM7TDMI ARM7TDMI ARM7TDMI 支持支持支持支持3 3 3 3种数据类型种数据类型种数据类型种数据类型 字节字节字节字节 (8-bit)(8-bit)(8-bit)(8-bit) 半字半字半字半字 (16-bit) (16-bit) (16-bit) (16-bit) 字字字字 (32-bit) (32-bit) (32-bit) (32-bit)字必须被排成字必须被排成字必须被排成字必须被排成4 4 4 4个字节边界对齐个字节边界对齐个字节边界对齐个字节边界对齐, , , ,半字必须半字必须半字必须半字必须

5、被排列成被排列成被排列成被排列成2 2 2 2个字节边界对齐个字节边界对齐个字节边界对齐个字节边界对齐 2.1.2 ARM2.1.2 ARM2.1.2 ARM2.1.2 ARM处理器的工作状态处理器的工作状态处理器的工作状态处理器的工作状态 ARMARMARMARM微处理器的工作状态一般有两种微处理器的工作状态一般有两种微处理器的工作状态一般有两种微处理器的工作状态一般有两种: : : : ARMARMARMARM状态状态状态状态处理器执行处理器执行处理器执行处理器执行32323232位的字对齐的位的字对齐的位的字对齐的位的字对齐的ARMARMARMARM指令;指令;指令;指令; ThumbT

6、humbThumbThumb状态状态状态状态处理器执行处理器执行处理器执行处理器执行16161616位的、半字对齐的位的、半字对齐的位的、半字对齐的位的、半字对齐的ThumbThumbThumbThumb指令。指令。指令。指令。 ARM ARM ARM ARM和和和和ThumbThumbThumbThumb指令集均有切换处理器状态的指令,指令集均有切换处理器状态的指令,指令集均有切换处理器状态的指令,指令集均有切换处理器状态的指令,在程序的执行过程中,处理器可以随时在两种在程序的执行过程中,处理器可以随时在两种在程序的执行过程中,处理器可以随时在两种在程序的执行过程中,处理器可以随时在两种状态

7、之间切换,并且处理器工作状态的转变并状态之间切换,并且处理器工作状态的转变并状态之间切换,并且处理器工作状态的转变并状态之间切换,并且处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内不影响处理器的工作模式和相应寄存器中的内不影响处理器的工作模式和相应寄存器中的内不影响处理器的工作模式和相应寄存器中的内容,但是有些场合中系统只能使用容,但是有些场合中系统只能使用容,但是有些场合中系统只能使用容,但是有些场合中系统只能使用ARMARMARMARM指令。指令。指令。指令。 只能使用只能使用只能使用只能使用ARMARMARMARM指令的场合指令的场合指令的场合指令的场合: : : : 1

8、. 1. 1. 1.如果对于速度有比较高的要求,如果对于速度有比较高的要求,如果对于速度有比较高的要求,如果对于速度有比较高的要求,ARMARMARMARM指令在指令在指令在指令在宽存储器中会提供更高的性能;宽存储器中会提供更高的性能;宽存储器中会提供更高的性能;宽存储器中会提供更高的性能; 2. 2. 2. 2.某些功能只能由某些功能只能由某些功能只能由某些功能只能由ARMARMARMARM指令来实现,比如:访指令来实现,比如:访指令来实现,比如:访指令来实现,比如:访问问问问CPSRCPSRCPSRCPSR寄存器来使能寄存器来使能寄存器来使能寄存器来使能/ / / /禁止中断或者改变处理禁

9、止中断或者改变处理禁止中断或者改变处理禁止中断或者改变处理器工作模式;访问协处理器器工作模式;访问协处理器器工作模式;访问协处理器器工作模式;访问协处理器CP15CP15CP15CP15;执行;执行;执行;执行C C C C代码代码代码代码不支持的不支持的不支持的不支持的DSPDSPDSPDSP算术指令;算术指令;算术指令;算术指令; 3. 3. 3. 3.异常中断异常中断异常中断异常中断(Exception)(Exception)(Exception)(Exception)处理。在进入异常中处理。在进入异常中处理。在进入异常中处理。在进入异常中断后,内核自动切换到断后,内核自动切换到断后,内

10、核自动切换到断后,内核自动切换到ARMARMARMARM状态。即在异常中状态。即在异常中状态。即在异常中状态。即在异常中断处理程序入口的一些指令是断处理程序入口的一些指令是断处理程序入口的一些指令是断处理程序入口的一些指令是ARMARMARMARM指令,然后指令,然后指令,然后指令,然后根据需要程序可以切换到根据需要程序可以切换到根据需要程序可以切换到根据需要程序可以切换到ThumbThumbThumbThumb状态,在异常状态,在异常状态,在异常状态,在异常中断处理程序返回前,程序再切换到中断处理程序返回前,程序再切换到中断处理程序返回前,程序再切换到中断处理程序返回前,程序再切换到ARMA

11、RMARMARM状态。状态。状态。状态。 4. ARM4. ARM4. ARM4. ARM处理器总是从处理器总是从处理器总是从处理器总是从ARMARMARMARM状态开始执行。因而,状态开始执行。因而,状态开始执行。因而,状态开始执行。因而,如果要在调试器中运行如果要在调试器中运行如果要在调试器中运行如果要在调试器中运行ThumbThumbThumbThumb程序,必须为该程序,必须为该程序,必须为该程序,必须为该ThumbThumbThumbThumb程序添加一个程序添加一个程序添加一个程序添加一个ARMARMARMARM程序头,然后再切换到程序头,然后再切换到程序头,然后再切换到程序头,然

12、后再切换到ThumbThumbThumbThumb状态,调用该状态,调用该状态,调用该状态,调用该ThumbThumbThumbThumb程序。程序。程序。程序。 ThumbThumbThumbThumb状态和状态和状态和状态和ARMARMARMARM状态切换的实现状态切换的实现状态切换的实现状态切换的实现: : : : BX Rn BX Rn BX Rn BX Rn Rn Rn Rn Rn可以是寄存器可以是寄存器可以是寄存器可以是寄存器R0R15R0R15R0R15R0R15中的任意一个,指令中的任意一个,指令中的任意一个,指令中的任意一个,指令可以通过将寄存器可以通过将寄存器可以通过将寄存

13、器可以通过将寄存器RnRnRnRn的内容拷贝到程序计数器的内容拷贝到程序计数器的内容拷贝到程序计数器的内容拷贝到程序计数器PCPCPCPC来完成在来完成在来完成在来完成在4Gbyte4Gbyte4Gbyte4Gbyte地址空间中的绝对跳转,而地址空间中的绝对跳转,而地址空间中的绝对跳转,而地址空间中的绝对跳转,而状态切换是由寄存器状态切换是由寄存器状态切换是由寄存器状态切换是由寄存器RnRnRnRn的最低位来指定的,如的最低位来指定的,如的最低位来指定的,如的最低位来指定的,如果操作数寄存器的状态位果操作数寄存器的状态位果操作数寄存器的状态位果操作数寄存器的状态位Bit0=0Bit0=0Bit

14、0=0Bit0=0,则进入,则进入,则进入,则进入ARMARMARMARM状态,如果状态,如果状态,如果状态,如果Bit0=1Bit0=1Bit0=1Bit0=1,则进入,则进入,则进入,则进入ThumbThumbThumbThumb状态状态状态状态 。ThumbThumbThumbThumb状态和状态和状态和状态和ARMARMARMARM状态切换的实现状态切换的实现状态切换的实现状态切换的实现: : : : CODE32 /ARMCODE32 /ARM状态下的代码状态下的代码状态下的代码状态下的代码 LDR R0, =Into_Thumb+1 /LDR R0, =Into_Thumb+1 /

15、产生跳转地址并且产生跳转地址并且产生跳转地址并且产生跳转地址并且设置最低位设置最低位设置最低位设置最低位 BX R0BX R0/Branch Exchange /Branch Exchange 进入进入进入进入ThumbThumb状态状态状态状态 CODE16 /ThumbCODE16 /Thumb状态下的子函数状态下的子函数状态下的子函数状态下的子函数 Into_Thumb Into_Thumb LDR R3, =Back_to_ARMLDR R3, =Back_to_ARM / /产生字对齐的跳转地址,最低位被清除产生字对齐的跳转地址,最低位被清除产生字对齐的跳转地址,最低位被清除产生字对

16、齐的跳转地址,最低位被清除 BX R3 BX R3 /Branch Exchange /Branch Exchange 返回到返回到返回到返回到ARMARM状状状状态态态态 CODE32 /ARMCODE32 /ARM状态下的子函数状态下的子函数状态下的子函数状态下的子函数 Back_to_ARM Back_to_ARM 2.1.3 ARM2.1.3 ARM2.1.3 ARM2.1.3 ARM体系结构的存储器格式体系结构的存储器格式体系结构的存储器格式体系结构的存储器格式 ARMARMARMARM体系结构将存储器看作是从体系结构将存储器看作是从体系结构将存储器看作是从体系结构将存储器看作是从0 0 0 0地址开始地址开始地址开始地址开始的字节的线性组合。从的字节的线性组合。从的字节的线性组合。从的字节的线性组合。从0 0 0 0字节到字节到字节到字节到3 3 3 3字节放置第一字节放置第一字节放置第一字节放置第一个存储的字数据,从第个存储的字数据,从第个存储的字数据,从第个存储的字数据,从第4 4 4 4个字节到第个字节到第个字节到第个字节到第7 7 7 7个字节放个字节放个字节放个字

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号