Arm指令格式

ARM指令的编码格式 
实际指令语法格式为: 
ADDEQS R0,R1,R2; 
该指令的编码格式为: 

ARM指令的助记符 
ARM指令在汇编程序中用助记符表示,一般ARM指令的助记符格式为: 
<opcode>{<cond>} {S} <Rd>,<Rn>,<op2> 
其中: 
<opcode> 操作码,如ADD表示算术加操作指令; 
{<cond>} 决定指令执行的条件域; 
{S} 决定指令执行是否影响CPSR寄存器的值; 
<Rd> 目的寄存器; 
<Rn> 第一个操作数,为寄存器; 
<op2> 第二个操作数。 
例如,指令 ADDEQS R1,R2,#5 

条件域<cond> 
几乎所有的ARM指令都可以根据当前程序状态寄存器CPSR中标志位的值,有条件地执行。 
ARM指令的条件域<cond>有16种类型。 

ARM指令中的第二操作数 
灵活的使用第2个操作数“operand2”能够提高代码效率。它有如下的形式: 
#immed_8r——常数表达式; 
Rm——寄存器方式; 
Rm,shift——寄存器移位方式 

ARM指令中的第二操作数 
如果一个32位立即数直接用在32位指令编码中,就有可能完全占据32位指令编码空间。因此,ARM指令的32位立即数是通过循环右移偶数位得到的。 
立即数是由一个8位的常数循环右移位偶数位得到的。 
<immediate>=immed_8循环右移(2×rotate_imm) 
例如:下面的代码段: 
MOV R0, #0x0000F200 
MOV R1, #0x00110000 
MOV R4, #0x00012800 
上面的指令经过汇编之后得到的二进制编码为: 
8000:E3A00CF2 (0xF200是由0xF2循环右移24位得到的) 
8004:E3A01811(0x110000是由0x11循环右移16位得到的) 
8008: E3A04B4A(0x12800是由0下4A循环右移24位得到的) 
非法的立即数:0x1010,0x00102,0xFF1000 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
x86和ARM指令集是两种常见的计算机体系结构的指令集架构。它们都用于指导计算机硬件执行特定的任务和操作。以下是关于x86和ARM指令集的一些简要信息: x86指令集:x86是一种基于CISC(复杂指令集计算)体系结构的指令集。该指令集最初由英特尔开发,并成为主要的个人计算机和服务器体系结构。x86指令集包含丰富的指令,可执行多种操作,包括算术运算、逻辑运算、数据传输和控制流等。它是一种复杂的指令集,并且具有较高的执行能力和灵活性。凭借广泛的软件支持和计算能力,x86成为桌面和服务器领域最流行的体系结构之一。 ARM指令集:ARM是一种基于RISC(精简指令集计算)体系结构的指令集。它最初由英国公司ARM Holdings开发,并成为移动设备(如智能手机和平板电脑)和嵌入式系统的主要体系结构。ARM指令集设计简洁,指令数量较少,每条指令一般只执行一个简单的操作。与x86相比,ARM指令集执行效率更高,并具有更低的功耗和较小的芯片面积。因此,它成为便携式设备和嵌入式系统中的首选体系结构。 x86和ARM的比较:x86指令集适用于大型多任务处理、复杂的图形操作和计算密集型任务。它具有广泛的软件生态系统和令人称赞的性能。然而,由于复杂指令集的特性,x86架构的芯片更复杂、功耗较高,并且相对较贵。 相比之下,ARM指令集在低功耗设备方面表现出色。ARM芯片的功耗较低,性能较高,并且在移动设备和嵌入式系统中能够提供高度集成的解决方案。此外,由于ARM芯片广泛采用,其生态系统和软件支持也非常庞大。 总结而言,x86和ARM指令集都有各自的优势和适用场景。x86适用于高性能和复杂任务的计算机系统,而ARM则适用于低功耗和便携设备的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值