- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 ARM 指令表 3.1 ARM指令学习程序框架 按照1.3.2小节中的方法,建立工程文件ex3_1.mcp,其中,源文件名为InstAn.s。在图1-16中,指定RO Base为0x3000 0000(对于UP-NETARM2410实验箱出厂设置)或者0x4000 0000(对于SBC2440出厂设置)。需要说明的是,如果用户更新了实验箱上的FLASH内容,则需要按照第五章的内容进行ARM汇编语言程序设计,即需要添加初始化S3C2410芯片的程序段。 InstAn.s的代码如下: 1 AREA InstAn, CODE, READONLY 2 ENTRY 3 START 4 ;Instructions to be Analyzed 5 ;Results will be shown in Registers 6 ;Enter the RealView Debugger then Press Menu “View|Registers” 7 ;Here is an example which shows the usage of MOV: 8 MOV R0, #0x78 9 MOV R2, R0 10 STOP 11 BL STOP 12 END 上面的程序段中分号后面的为注释,START标号要顶格写,START标号后面书写需要分析的ARM指令,分析结果要在RealView Debugger调试器的寄存器中查看(本书中不会出现printf等输出信息到控制台的语句,而很多与ARM相关的书里面都有类似的语句。本书程序的输出结果通过四种方式查看,即寄存器、存储器、显示屏等硬件输出设备或计算机串行终端显示)。上述程序演示了MOV指令的部分功能,其中,“MOV R0, #0x78”执行后,R0寄存器的值为0x78,“MOV R2, R0”执行后,寄存器R2的值为0x78。程序最后要有一个循环语句。 3.2 ARM指令格式 全部ARM指令的字长均为32位,按字对齐方式存储(一个字等于4个字节),如果第一条ARM指令的地址为0x0000 0000,则其下一条指令的地址为0x0000 0004,依次类推,即存储器中ARM指令的地址的最低两位总为0。 ARM指令的汇编语言语法格式为 opcode{cond}{S} Rd, Rn {,shifter_operand}其中: 为必需项,{ }为可选项。 opcode表示ARM指令汇编语言助记符,如ADC、ADD等,针对ARM920T(即ARMv4T)而言,具体内容参见表3-1。 cond表示指令执行的条件码助记符。所有ARM指令都是条件执行的:当条件满足时,指令执行;当条件不满足时,指令不执行。条件码位于指令机器编码的高4位,如图3-1所示,即第31~28位,共有24=16种条件码,其含义和助记符如表3-2所示。 S表示如果指令中有S后缀,则指令执行将影响CPSR的值,否则不影响。 Rd表示目的寄存器。 Rn表示第一个源操作数寄存器。 shifter_operand表示第二个源操作数。 图3-1 ARM指令机器码汇总 一般地,一条ARM汇编语言指令编译后对应于一条可执行的32位ARM机器码指令,ARM机器码指令如图3-1所示,其中第31~28位为条件码,从图3-1中可以分析出各操作数所占的位数及可能的取值范围。例如,Rn、Rd、Rs和Rm用于表示寄存器R0~R15中的某个,故均占有4位。 3.3 ARM指令寻址方式 ARM指令寻址方式本质上是ARM汇编指令的编码规则,熟悉ARM指令寻址方式,有助于写出正确的ARM指令。在学习复杂的汇编语言指令集时,指令寻址方式显得尤为重要;尽管基于RISC指令集的ARM指令数量较少,但是了解ARM指令的寻址方式,可以更深入地掌握ARM汇编指令集。按照指令操作数类型,ARM指令集分为五种寻址方式,依次为数据处理操作数寻址、字与无符号字节存储/装入寻址、双字与半字及有符号字节存储/装入寻址、寄存器批量存储/装入寻址、协处理器存储/装入寻址。 3.3.1 数据处理操作数寻址 数据处理操作数寻址方式的指令语法为: opcode{cond}{S} Rd, Rn, shifter_operand其中,shifter_operand有11种形式,如下所述。 模式1:立即数 机器码:如图3-2所示。 图3-2 形式1的ARM指令编码 语法:#immedia
文档评论(0)