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指令相关推荐

  1. 2020-12-4((ARM汇编)mov指令,LDR指令,LDR伪指令)

    首先说明一下 ARM是RISC("reduced instruction set computer",即"精简指令集计算机")结构 x86是CISC(" ...

  2. ARM中的---汇编指令

    ARM中的---汇编指令 一. 带点的(一般都是ARM GNU伪汇编指令) 1. ".text".".data".".bss" 依次表示的是 ...

  3. linux中swi指令,ARM中的SWI指令(转)

    在需要软件中断处调用 __SWI  0xNum           ;Num为SWI中断处理模块的编号,见表SwiFunction ;软件中断 SWI_Exception_Function CMP   ...

  4. ARM中的ldr指令与adr、ldr伪指令之间的区别

    ARM汇编语言中有ldr指令和ldr.adr伪指令,他们都可以将标号表达式作为操作数.区别如下: ldr指令和adr.ldr伪指令的区别:ldr指令属于load-store指令,用于读取标号地址中的值 ...

  5. ARM汇编之MOV指令

    一.指令格式 MOV{条件}{S} 目的寄存器,源操作数 二.指令详解 MOV指令可完成从另一个寄存器.被移位的寄存器或立即数赋值到目的寄存器.其中S选项为指令的操作结果是否操作CPSR中的条件标志位 ...

  6. ARM中MRS汇编指令

    ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据. 针对32位的ARM处理器,状态寄存器就是一个32位长的寄存器.每个位的含义如下图: 分成了4部分: 1,条件标志位 N(Negative) ...

  7. ARM中跳转指令BL/BLX偏移值计算规则

    源文地址:http://www.cnblogs.com/Reyzal/p/4857948.html 1. 4字节对齐arm指令 规则:偏移=( 跳转地址-(指令地址+8) )/4 原因: 指令地址 + ...

  8. windows debug下验证汇编指令中的mov指令传送数据

    一.知识储备 1.8086CPU是16位结构,有16根数据线,20根地址线.16根数据线可以一次性传送16位数据,也就是两个字节(也就是一个字)的数据. 什么是字? 在这个特定计算机中,字是其用来一次 ...

  9. 秒懂 堆栈寻址 STMFA STMFD LDMFA LDMED( ARM中的汇编指令)

    走过路过的朋友不要错过,看一看点个赞,如果评论更喜欢.

最新文章

  1. 基于Python利用OpenCV实现Hough变换的形状检测
  2. CMakeLists.txt文件如何编写?(一 基础篇)
  3. Python-可视化Evoked数据
  4. 线性回归、逻辑回归、损失函数
  5. RocketMQ 消息丢失场景及解决办法
  6. ubuntu下安装Qt的过程以及遇到的问题和解决方案
  7. 【机器视觉】 HDevelop语言基础(三)-容器和保留字
  8. C++代码片段(二)判断可变模板参数中是否包含某一特定类型
  9. ---WebCam网络摄像头12 ---图像编码解码,视频编码解码
  10. Win11正式版版号 Win11正式版最新版本号介绍
  11. java将数据写入csv文件,从csv文件中读取数据
  12. Apache Flink SQL概览
  13. activiti6创建28张表
  14. 微分比例控制与测速反馈控制
  15. 网络协议服务器常用默认端口
  16. 如何注册域名的详细图文过程分享
  17. android打开sd卡文件,从Android中的SD卡读取特定文件
  18. 【Google Paper】对比学习用于解决推荐系统长尾问题
  19. 微信公众平台测试号推送思路
  20. CSDN 下载 版块问题解决日志

热门文章

  1. gawk创建标题和脚本_使用此Gawk脚本为社交媒体帖子创建精美的文本
  2. 【计算机网络】计算机网络核心知识点
  3. 今日头条2018.8.12笔试题总结
  4. 学生成绩管理系统E-R图
  5. 十多个巨头App上可跑智能小程序了
  6. git如何新建分支进行开发
  7. 烂泥:Domino8.5服务器迁移方案
  8. c语言代码查错软件,Ubuntu下面的C语言代码检查工具 Splint
  9. 「6月雅礼集训 2017 Day4」暴力大神hxx
  10. 快递行业前景:2022年市场迎来了发展新纪元