通俗易懂:ARM指令的寻址方式(三)

一、为什么所有的ARM指令都是条件执行?

ARM处理器在拿到一条指令的时候,它首先要看条件码给出的条件和CPSR条件码标志位里现存的这个状况匹配不匹配,如果匹配,条件符合,它才执行。如果不匹配,这行ARM指令它就不执行。

二、对于立即数0xF132,能不能把它放在ARM当中?

不能。在ARM指令机器编码基本格式中,操作数2为立即数,且只占12位。

注:操作数2包括寄存器里的数据在ARM的CPU的算数逻辑单元和其他处理系统乘法器。这些东西在计算的过程当中,数据都要转换成32位数据。

三、12位数据转换成32位数据

12位编码包括8位常数和4位循环右移值,由8位常数循环右移4位值的2倍,得到最后的32位立即数。

例:

复制代码
MOV R0,#0x0000F200     ;R0<------#0x0000F200

机器代码:E3A00CF2


//MOV : [1]、[2];R0 : E ;

解析:13A:指令码------MOV是指令助记符,3A是MOV的机器编码

2E:1110------指令助记符:AL。无条件执行,相当于MOV AL。

300:原指令中只有目的寄存器,没有操作数1寄存器

4C:4位循环右移值位C(十进制为120

50xF2:8位常数

##3A如何译为"搬移",CPU(硬件)里有存有相应的译码机制,来完成·相应的译码和执行。

##12位数据转换位32位数据方法如图:

注:移位操作:以4位二进制数为1组,只需让这组循环右移6次(4*6=24)。

四、ARM指令的指令机器编码格式和指令一般格式(程序员书写格式)

1、ARM指令机器编码格式

注:目的寄存器和操作数1寄存器必须是寄存器(16位寄存器)。操作数2可以是:立即数或寄存器

2、指令一般格式(程序员书写格式)

相关推荐
虎头金猫8 小时前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
m0_5474866610 小时前
《数据结构教程》全套 PPT课件2026
数据结构
AI职业加油站10 小时前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
此冬歌咏11 小时前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
女神下凡11 小时前
嵌入式设计的各种存储芯片的硬件/软件设计规范,非常全面。
arm开发·单片机·嵌入式硬件
-梅11 小时前
linux(8) 软硬链接
linux·运维·服务器
张洛闻Eren12 小时前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
其实防守也摸鱼12 小时前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
布裘12 小时前
【银河麒麟】V4桌面图标消失,右击鼠标没反应排查
运维·银河麒麟·桌面环境
从零开始的嵌入式之旅13 小时前
day47
arm开发·经验分享·笔记·嵌入式硬件