汇编及嵌入式C语言—第二章幻灯片课件.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编及嵌入式C语言mdash;第二章幻灯片课件.ppt

ARM处理器 及嵌入式C语言 2.1.2 ARM处理器的工作状态 ARM微处理器的工作状态一般有两种: ARM状态—处理器执行32位的字对齐的ARM指令; Thumb状态—处理器执行16位的、半字对齐的Thumb指令。 ARM和Thumb指令集均有切换处理器状态的指令,在程序的执行过程中,处理器可以随时在两种状态之间切换,并且处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容,但是有些场合中系统只能使用ARM指令。 只能使用ARM指令的场合: 1.如果对于速度有比较高的要求,ARM指令在宽存储器中会提供更高的性能; 2.某些功能只能由ARM指令来实现,比如:访问CPSR寄存器来使能/禁止中断或者改变处理器工作模式;访问协处理器CP15;执行C代码不支持的DSP算术指令; 3.异常中断(Exception)处理。在进入异常中断后,内核自动切换到ARM状态。即在异常中断处理程序入口的一些指令是ARM指令,然后根据需要程序可以切换到Thumb状态,在异常中断处理程序返回前,程序再切换到ARM状态。 4. ARM处理器总是从ARM状态开始执行。因而,如果要在调试器中运行Thumb程序,必须为该Thumb程序添加一个ARM程序头,然后再切换到Thumb状态,调用该Thumb程序。 Thumb状态和ARM状态切换的实现: BX Rn Rn可以是寄存器R0—R15中的任意一个,指令可以通过将寄存器Rn的内容拷贝到程序计数器PC来完成在4Gbyte地址空间中的绝对跳转,而状态切换是由寄存器Rn的最低位来指定的,如果操作数寄存器的状态位Bit0=0,则进入ARM状态,如果Bit0=1,则进入Thumb状态 。 Thumb状态和ARM状态切换的实现: CODE32 //ARM状态下的代码 LDR R0, =Into_Thumb+1 //产生跳转地址并且设置最低位 BX R0 //Branch Exchange 进入Thumb状态 … CODE16 //Thumb状态下的子函数 Into_Thumb … LDR R3, =Back_to_ARM //产生字对齐的跳转地址,最低位被清除 BX R3 //Branch Exchange 返回到ARM状态 … CODE32 //ARM状态下的子函数 Back_to_ARM … 2.1.3 ARM体系结构的存储器格式 ARM体系结构将存储器看作是从0地址开始的字节的线性组合。从0字节到3字节放置第一个存储的字数据,从第4个字节到第7个字节放置第二个存储的字数据,依次排列。作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB。 ARM体系结构可以用两种方法存储字数据,称之为大端格式和小端格式。 小端格式 大端格式 问题:32bits宽的数0放 在0xb00d4000—0xb00d4003存 储器中,在大端模式如何放置? 在小端模式又如何放置? 2.1.4 处理器模式 ARM处理器支持7种运行模式: 处理器模式 说明 备注 用户  (usr) 正常程序工作模式 不能直接切换到其它模式 系统 (sys) 用于支持操作系统的特权任务等 仅在ARMv4及以上版本中存在,与用户模式类似,但可以直接切换到其它模式 快中断 (fiq) 支持高速数据传输及通道处理 FIQ异常响应时进入此模式 中断 (irq) 用于通用中断处理 IRQ异常响应时进入此模式 特权 (svc) 操作系统保护代码 系统复位和软件中断响应时进入此模式 中止 (abt) 当数据或指令预取中止时进入该模式 未定义 (und) 当未定义的指令执行时进入该模式 未定义指令异常响应时进入此模式 处理器模式 说明 备注 用户 (usr) 正常程序工作模式 不能直接切换到其它模式 系统 (sys) 用于支持操作系统的特权任务等 与用户模式类似,但具有可以直接切换到其它模式等特权 快中断 (fiq) 支持高速数据传输及通道处理 FIQ异常响应时进入此模式 中断 (irq) 用于通用中断

文档评论(0)

yuzongxu123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档