第2章 arm体系结构(指令系统).ppt

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

* 中国矿业大学——信电学院——张林 * 预定义变量2 ·ip和IP(过程调用中间临时寄存器,与r12同义); ·sp和SP(堆栈指针,与r13同义); ·lr和LR(链接寄存器,与r14同义); ·pc和PC(程序计数器,与r15同义); ·cpsr和CPSR(程序状态寄存器); ·spsr和SPSR(程序状态寄存器); ·f0~f7和F0~F7(FPA寄存器); ·s0~s31和S0~S31(VFP单精度寄存器); ·d0~d15和D0~D15(VFP双精度寄存器); ·p0~p15(协处理器0~15); ·c0~c15(协处理器寄存器0~15)。 ARM汇编程序设计 * 中国矿业大学——信电学院——张林 * 内置变量1 ARM汇编器所定义的内置变量如表4-1所示。值得注意的是内置变量的设置不能用SETA、SETL或SETS等指示符来设置,只能用于表达式或条件语句。例如: IF {ARCHITECTURE} = “4T” ARM汇编程序设计 * 中国矿业大学——信电学院——张林 * 变量 含义 {PC}或. 当前指令的地址 {VAR}或@ 存储区位置计数器的当前值 {TRUE} 逻辑常量真 {FALSE} 逻辑常量假 {OPT} 当前设置列表选项值,OPT用来保存当前列表选项,改变选项值,恢复它的原始值 {CONFIG} 如果汇编器汇编ARM代码,则值为32;如果汇编器汇编Thumb代码,则值为16 {ENDIAN} 如果汇编器在大端模式下,则值为big;如果汇编器在小端模式下,则值为little ARM汇编程序设计 表4-1 内置变量 * 中国矿业大学——信电学院——张林 * {CODESIZE} 如果汇编器汇编ARM代码,则值为32;如果汇编器汇编Thumb代码,则值为16,与{CONFIG}同义 {CPU} 选定的CPU名,缺省时为ARM7TDMI {FPU} 选定的FPU名,缺省时为SoftVFP {ARCHITECTURE} 选定的ARM体系结构的值;3,3M,4,4T和4TxM {PCSTOREOFFSET} STR pc,[…]或STM Rb,[…PC]指令的地址和PC存储值之间的偏移量 {ARMASM_VERSION} 或| ads $ version | ARM汇编器的版本号,为整数 ARM汇编程序设计 表4-1 内置变量(续) * * 若相等,Z=1;否则,z=0。若产生借位,C=0;否则C=1。 * * 若产生进位,C=1;否则C=0。 对于加法和减法指令,当发生带符号溢出时,V置1;对于其它费加法和减法指令,V通常不变。 * * 散转程序是分支程序的一种, 它可根据运算结果或用户输入数据将程序转入不同的分支. * * 前索引偏移指令:LDR R0,[R1,#4] * * 若Rn是R15则不能使用! * * R13:SP R14:LR R15:PC R16:CPSR R17:SPSR * * SWI:0* * TST指令:如果指令的结果为0,则Z=1;不等于0,则Z=0 EQ:Z=1;NE:Z=0 * * Load ADdRess Load ADdRess long * * * 中国矿业大学——信电学院——张林 * ARM指令——LOAD/STORE指令综合应用 3. 简单的块复制 实现简单的数据块复制。 程序一次将48个字数据从R12作为首地址的一段连续的内存单元复制到R13作为首地址的一段连续的内存单元。 代码执行前R12为源数据区首地址,R13为目标数据区首地址,R14为源数据区末地址。 Loop LDMIA R12!,{R0-R11} STMIA R13!,{R0-R11} CMP R12,R14 BNE Loop ;从源数据区读取48个字 ;将48个字保存到目标数据区 ;是否到达源数据结尾 ;如果没有到达源数据结果 * 中国矿业大学——信电学院——张林 * ARM指令——LOAD/STORE指令综合应用 4. 子程序进入和退出时数据的保存和恢复 在调用子程序时,通常利用寄存器R0~R3传递参数和返回结果,这几个参数由子程序的调用者来保存,其他的子程序将要用到的寄存器在子程序入口处保存,在子程序返回前恢复这些寄存器。 function STMFD R13!,{R4-R12,R14} … ; Insert the function body here … LDMFD R13!,{R4-R12,PC} ; 保存所有的本地寄存器,返回地址并更新栈指针 ; 恢复本地寄存器、PC寄存器,并更新栈指针 * 中国矿业大学——信电学院——张林 *

文档评论(0)

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

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

1亿VIP精品文档

相关文档