ARM中的MOV指令
ARM中的MOV指令格式是这样的
op2是占了12位,其中bit11-bit8是移位数(rotate),bit7-0是一个8位的立即数(imm),MOV Rn, op2,执行之后,Rn=op2 >> (rotate * 2),这里的移位是循环右移,这就决定了MOV指令不是所有的立即数都能表示的,以下是几个例子:
1、mov r3, #0x56000000
虽然0x56000000是一个32位的数,但是可以找到这么一个8位立即数,通过右移得到,看下机器码e3a03456,展开成二进制,对照下格式
1110 0011 1010 0000 0011 0100 0101 0110
cond[31:28]=1110
[27:26]=00
L[25]=1,代表op2是一个立即数
OpCode[24:21]=1101
S[20]=0
Rn[19:16]=0000
Rd[15:12]=0011,R3
Op2[11:8]=0100,右移4 * 2位
Op2[7:0]=0101 0110,8位立即数,0x56
首先要将0x56扩展成32位的无符号数,0x00000056,然后循环右移8位,就得到了0x56000000
2、mov r3, #0x56000014
0x56000014是无法通过移位来得到的,这时编译器会报错,C语言编写的程序,编译器会这样来处理:
mov r3, #0x56000000
add r3, r3, #0x14
代替mov的另外一条指令就是ldr,或许会更方便点。
看了2440的datasheet,最令人费解的就是rotate了,习惯了C语言里的逻辑右移,把循环右移和逻辑右移混淆了。
ARM中的MOV指令相关推荐
- 2020-12-4((ARM汇编)mov指令,LDR指令,LDR伪指令)
首先说明一下 ARM是RISC("reduced instruction set computer",即"精简指令集计算机")结构 x86是CISC(" ...
- ARM中的---汇编指令
ARM中的---汇编指令 一. 带点的(一般都是ARM GNU伪汇编指令) 1. ".text".".data".".bss" 依次表示的是 ...
- linux中swi指令,ARM中的SWI指令(转)
在需要软件中断处调用 __SWI 0xNum ;Num为SWI中断处理模块的编号,见表SwiFunction ;软件中断 SWI_Exception_Function CMP ...
- ARM中的ldr指令与adr、ldr伪指令之间的区别
ARM汇编语言中有ldr指令和ldr.adr伪指令,他们都可以将标号表达式作为操作数.区别如下: ldr指令和adr.ldr伪指令的区别:ldr指令属于load-store指令,用于读取标号地址中的值 ...
- ARM汇编之MOV指令
一.指令格式 MOV{条件}{S} 目的寄存器,源操作数 二.指令详解 MOV指令可完成从另一个寄存器.被移位的寄存器或立即数赋值到目的寄存器.其中S选项为指令的操作结果是否操作CPSR中的条件标志位 ...
- ARM中MRS汇编指令
ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据. 针对32位的ARM处理器,状态寄存器就是一个32位长的寄存器.每个位的含义如下图: 分成了4部分: 1,条件标志位 N(Negative) ...
- ARM中跳转指令BL/BLX偏移值计算规则
源文地址:http://www.cnblogs.com/Reyzal/p/4857948.html 1. 4字节对齐arm指令 规则:偏移=( 跳转地址-(指令地址+8) )/4 原因: 指令地址 + ...
- windows debug下验证汇编指令中的mov指令传送数据
一.知识储备 1.8086CPU是16位结构,有16根数据线,20根地址线.16根数据线可以一次性传送16位数据,也就是两个字节(也就是一个字)的数据. 什么是字? 在这个特定计算机中,字是其用来一次 ...
- 秒懂 堆栈寻址 STMFA STMFD LDMFA LDMED( ARM中的汇编指令)
走过路过的朋友不要错过,看一看点个赞,如果评论更喜欢.
最新文章
- 基于Python利用OpenCV实现Hough变换的形状检测
- CMakeLists.txt文件如何编写?(一 基础篇)
- Python-可视化Evoked数据
- 线性回归、逻辑回归、损失函数
- RocketMQ 消息丢失场景及解决办法
- ubuntu下安装Qt的过程以及遇到的问题和解决方案
- 【机器视觉】 HDevelop语言基础(三)-容器和保留字
- C++代码片段(二)判断可变模板参数中是否包含某一特定类型
- ---WebCam网络摄像头12 ---图像编码解码,视频编码解码
- Win11正式版版号 Win11正式版最新版本号介绍
- java将数据写入csv文件,从csv文件中读取数据
- Apache Flink SQL概览
- activiti6创建28张表
- 微分比例控制与测速反馈控制
- 网络协议服务器常用默认端口
- 如何注册域名的详细图文过程分享
- android打开sd卡文件,从Android中的SD卡读取特定文件
- 【Google Paper】对比学习用于解决推荐系统长尾问题
- 微信公众平台测试号推送思路
- CSDN 下载 版块问题解决日志