马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
1.ARM指令集编码 ARM指令集是以32位二进制编码的方式给出的,大部分的指令编码中定义了第一操作数、第二操作数、目的操作数、条件标志影响位以及每条指令所对应的不同功能实现的二进制位。每条32位ARM指令都具有不同的二进制编码方式,与不同的指令功能相对应,如图所示表示了ARM指令集编码。
2.条件执行 在ARM的指令编码表中,统一占用编码的最高4位[31:28]来表示条件码。每种条件码用两个英文缩写字符表示其含义,可添加在指令助记符的后面,表示指令执行时必须要满足的条件。ARM指令根据CPSR中的条件位自动判断是否执行指令。在条件满足时,指令执行;否则,指令被忽略。 例如,数据传送指令MOV加上条件后缀EQ后成为MOVEQ,表示“相等则执行传送”,“不相等则本条指令不执行”,即只有当CPRS中的Z标志为1时,才会发生数据传送。ARM指令集编码表列举了4位条件码的16种编码中能为用户所使用的15种,而编码1111为系统暂不使用的保留编码。
3.指令分类及指令格式 (1)
指令分类简述 ARM指令集是Load/Store型的,只能通过Load/Store指令实现对系统存储器的访问,而其他类型的指令时基于处理器内部的寄存器操作完成。 ARM指令集可分为6大类:数据处理指令、Load/Store指令、跳转指令、程序状态寄存器处理指令、协处理器指令和异常产生指令。 (2)
指令格式 ARM指令使用的基本格式如下: <opcode>{<cond>}{S} <Rd>,<Rn>,{<operand2>} (3)基本指令格式说明 指令格式中所用的英文缩写符号说明如下: Opcode 操作码;指令助记符,如LDR、STR等。 Cond 可选的条件码;执行条件,如EQ、NE等。 S 可选后缀;若指定S,则根据指令执行结果更新CPSR中的条件码 Rd 目标寄存器 Rn 存放在第1操作数的寄存器。 operand2第2个操作数。 指令基本格式中“<>”和“{ }”的说明: “< >”内的项是必需的,例如,<opcode>是指令助记符,这是必须书写的。 “{ }”内的(ˇˍˇ) 项是可选的,例如,{<code>}为指令执行条件,是可选项。若不书写,则使用默认条件AL(无条件执行)。 4.指令格式使用举例 指令格式举例如下: LDR R0,[R1] ;读取R1地址上的存储单元内容,执行条件AL BEQ DATAEVEN ;条件执行分支指令,执行条件EQ,即相等则跳转到DATAEVEN ADDS R2,R1,#1 ;加法指令,R2<-R1+1,影响CPSR寄存器(S) SUBNES R2,R1,#0x20 ;条件执行的减法运算,执行条件NE,R1-0x20->R2,影响CPSR寄存器。 凌阳教育,专注嵌入式人才培养13年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。想了解凌阳教育,或者获得更多嵌入式学习资料的免费下载,请点击www.sunplusedu.com访问凌阳教育官网 |