当前位置: 首页 > news >正文

指令系统1(数据传输指令)

一.ARM 指令基本格式opcode{<cond>}{S}<Rd>,<Rn>{,operand2}

  • opcode:即操作码,是指令助记符,像MOV(数据传送)、ADD(加法运算)等,用于明确指令要执行的操作类型。

  • cond:为可选条件码,决定指令在何种条件下执行。例如EQ(相等,Z标志位置位时)、NE(不相等,Z标志位清零时)等,通过对标志位的判断来确定指令是否执行。

  • S:是可选后缀,若指令中指定了S,那么指令执行结果会用于更新 APSR(应用程序状态寄存器)中的条件码,影响后续条件指令的执行。

  • Rd:代表目标寄存器,指令执行结果将存储在该寄存器中。

  • Rn:存放第 1 操作数的寄存器,为指令运算提供一个操作数来源。

  • operand2:表示第 2 个操作数,它的形式多样,能够是立即数、寄存器值或经过移位等操作后的结果。

二.条件码

  1. 条件码标志

    含义

    条件码标志

    含义

    EQ

    Z置位,相等 / 等于 0

    VC

    V清零,未溢出

    NE

    Z清零,不相等

    LS

    C清零且N置位,无符号数小于等于

    CS

    C置位,无符号数大于等于

    GE

    N等于V,带符号数大于等于

    CC

    C清零,无符号数小于

    LT

    N不等于V,带符号数小于

    MI

    N置位,负数

    GT

    Z清零且N等于V,带符号数大于

    PL

    N清零,正数或零

    LE

    Z置位或者N不等于V,带符号数小于等于

    VS

    V置位,溢出

    AL

    忽略,无条件执行

三.第 2 操作数的表示形式:包含多种移位操作,这些操作可用于对操作数进行变换,以满足不同的运算需求。

  • 逻辑移位LSL(逻辑左移)、LSR(逻辑右移) 。

  • 算术移位ASL(算术左移,与逻辑左移在某些情况下效果相同)、ASR(算术右移)。

  • 循环移位ROR(循环右移)、RRX(带扩展的循环右移)。例如ADDEQS R3,R2,R1,LSR#5,表示在相等条件下,将R1逻辑右移 5 位后与R2相加,结果存入R3

四.数据传送指令

  • 立即数加载到寄存器

    • 指令格式

      • MOV Rd,#<immed_8>(8 位立即数加载寄存器Rd);

      • MOVS.W Rd,#<immed_16>(16 位立即数加载寄存器Rd且影响标志);

      • MOVT.W Rd,#<immed_16>(16 位立即数加载寄存器Rd的高半字);

      • MOVW.W Rd,#<immed_16>(16 位立即数加载寄存器Rd的低半字,高 16 位清 0 )。

    • 示例

      • MOV R0,#0X80R0 = 0X00000080

      • MOVS.W R1,#0X1200R1 = 0X00001200且影响标志;

      • MOVT.W R2,#0X1234R2 = 0X12340000

      • MOVW.W R2,#0X1234 ,R2 = 0X00001234

  • 两个寄存器之间的传送

    • 指令格式MOV Rd,Rm

    • 示例MOV R3,R2MOV R2,#0X10MOVS.W R3,R2,LSR2R3结果为 4。

  • 寄存器与特殊功能寄存器之间的传送

    • 指令格式MRS <Rn>,<SReg>(加载特殊功能寄存器的值到Rn);MSR <Sreg>,<Rn>(传送Rn的值到特殊功能寄存器) 。

    • 示例MRS R0,IPSRMSR IPSR,R0 。

    • 特殊功能寄存器:如IPSR(当前服务中断号寄存器)、EPSR(执行状态寄存器)、APSR(上条指令结果的标志寄存器)等,MRS/MSR用于特权级别条件下访问这些特殊功能寄存器。


http://www.mrgr.cn/news/95066.html

相关文章:

  • java面试题,什么是动态代理?、动态代理和静态代理有什么区别?说一下反射机制?JDK Proxy 和 CGLib 有什么区别?动态代理的底层
  • Windows 图形显示驱动开发-WDDM 3.0功能- 硬件翻转队列(五)
  • 876.链表的中间节点
  • 图莫斯TOOMOSS上位机TCANLINPro使用CAN UDS功能时 编写、加载27服务dll解锁算法文件
  • 霍尔传感器与电流互感器的区别
  • 别让时光溜走!Kairos App 帮你抓住每一刻
  • SpringBoot3+Vue3实战(Vue3快速开发登录注册页面并对接后端接口)(4)
  • Lombok常用注解
  • 男女搭配(数学思维)
  • YOLO魔改之频率分割模块(FDM)
  • stm32第七天震动传感器
  • 【模拟】从 0 到 1:模拟算法的深度剖析与实战指南
  • python实现接口自动化
  • 【MySQL数据库】多表查询(笛卡尔积现象,联合查询、内连接、左外连接、右外连接、子查询)-通过练习快速掌握法
  • 4.好事多磨 1
  • C++项目:高并发内存池_上
  • 【深度学习与大模型基础】第6章-对角矩阵,对称矩阵,正交矩阵
  • 20250315-OpenAI-AgentSDK实验
  • 计算机网络面试篇
  • Linux:(socket套接字——TCP协议,守护进程)