X86架构与ARM架构比较
4、串处理指令
指令类功能:处理存放存储器里的数据串
X86串处理指令
指令类型 指 令 说 明
指 令 MOVS(串传送)、CMPS(串比较)、SCAS(串扫描)、LODS(从串取)、STOS(存入串)
ARM串处理指令: 无
5、控制转移指令
指令类功能:用来控制程序的执行流程
X86控制转移
指令类型 指 令 说 明
无条件转移指令 JMP(段间和段内转移)
条件转移指令 J Z(结果为0(或相等)则转移)、JS(结果为负则转移)、JNS(结果为正则转移)、JO(溢出则转移)、JNO(不溢出则转移)、JP(奇偶位为1则转移)、JNP(奇偶位为0则转移)
循环指令 LOOP(循环指令)、LOOPPZ/LOOPE(当为0或相等时循环指令)、LOOPNZ/LOOPNE(当不为0或不相等时循环指令)
子程序指令 CALL(调用指令)、RET(返回指令)
中断指令 INT(中断)、INTO(如溢出则中断)、RIET(从中断返回)
ARM控制转移
指令类型 指 令 说 明
无条件转移指令 B(跳转)
条件转移指令 BEQ(相等跳转)、BNE(不等跳转)等等
子程序指令 BL(跳转,并保存下一条指令的地址到LR)、MOV PC,LR(从函数返回)
软中断指令 SWI(软中断)
补充说明: ARM指令集没有X86那样专用的循环指令,这些指令都是通过B、BL指令结合其他的指令来实现的
6、相对跳转指令对比
X86相对跳转指令:
jmp short 标号(IP=IP+8位偏移量:-128~127)、
jmp near ptr 标号(IP=IP+16位偏移量:-32768~32767)、
loop(cx=cx-1;if(cx!=0) IP=IP+8位偏移量)
ARM相对跳转指令:
B、
BL
说明:B、BL指令的偏移量都是24 位有符号数,左移两位后为26位。有符号扩展为 32 位,表示的有效偏移为 26 位(+/-32MB的地址空间)。
7、绝对跳转指令对比
X86绝对跳转指令:
jmp far ptr 标号(CS=标号所在段的段地址;IP=标号所在段的偏移地址)、
jmp word ptr 内存单元(段内转移)、
jmp dword ptr 内存单元(段间转移)
ARM绝对跳转指令: 无专用的指令,需要用指令来模拟
<1> “ldr pc, =标号”(相应于B)
<2> ldr lr, =halt_loop(相应于BL)
ldr pc, =标号
halt_loop:
b halt_loop
三、指令集对比总结
1、ARM指令集更简洁,比较少
比如说除法指令、循环指令、堆栈专用指令等等都是是没有的,靠其他的指令综合来完成
2、ARM指令集功能更强大
比如说b指令可以跳转的范围是前后32M
3、ARM每条指令都可条件执行
这使得C语言跳转语句可以用很简便的方式实现
4、ARM指令集操作更有序
因为是LOAD/STORE结构,所以都是先从内存中加载数据到寄存器(load),然后通过寄存器处理,再把处理结果写到内存中(store)。
5、ARM指令集都是4字节的
这样便于流水线的实现,而且内存的分配更有序。在指令寻址上,也节省了两位地址。
x86架构arm架 相关文章:
- x86架构和arm架构处理器分析(11-09)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
