1.指令的编码格式

SUB(Subtract)减操作指令,从寄存器Rn>中减去shifter_operand>表示的数值,并将结果保存到目标寄存器Rd>中,并根据指令的执行结果设置CPSR中相应的标志位。本文引用地址:http://www.eepw.com.cn/article/257074.htm

指令的编码格式如图6.4所示。

图6.4 EOR指令的编码格式

2.指令的语法格式

SUB{cond>}{S} Rn>,Rn>,shifter_operand>

① cond>

为指令编码中的条件域。它指示指令在什么条件下执行。当cond>忽略时,指令为无条件执行(cond=AL(Alway))。

② S>

S位(bit[20])决定指令的执行是否影响CPSR中的条件域。当S位清0时,指令执行不影响CPSR。当S位置位时(并且不是r15),则有以下规则。

· 如果结果为负,则标志位N置位;否则清0(也就是说N等于结果的第31位)。

· 如果结果为0,则标志位Z置位;否则清0。

· 当操作定义为算术操作(ADD、ADC、SUB、SBC、RSB或RSC)时,标志位C设置为ALU的进位输出;否则设置为移位器的进位输出。如果不需要移位,则保持C。

· 在非算术操作中,标志位V保持原值。在算术操作中,如果有从第30位到第31位的溢出,则置位;如果不发生溢出,则清0。仅当算术操作中操作数被认为是2的补码的有符号数时,这个标志位才有意义,而且指示结果超出范围。

若指令中的目标寄存器Rd>为r15,则当前处理器模式对应的SPSR的值被复制到CPSR寄存器中。用户模式和系统模式下,由于没有相应的SPSR,指令的执行结果不可预知。

③ Rd>

指定目标寄存器。

④ Rn>

指定第一个源操作数寄存器。

⑤ shifter_operand>

使用ARM的通用寻址模式确定第二个源操作数。它影响指令编码格式中的I(bit[25])位和shifter_operand(bits[11∶0])位。

注意在操作时要特别小心C标志位的设置。当C=1时,表示减操作没有借位发生;当C=0时,说明减操作发生了借位。也就是说C标志位在这里被用作了非借位标志。

3.指令操作的伪代码

指令操作的伪代码如下面程序段所示。

If ConditionPassed{cond} then

Rd=Rn - shifter_operand

If S==1 and Rd==r15 then

CPSR=SPSR

Else if S==1 then

N flag=Rd[31]

Z flag=if Rd==0 then 1 else 0

C flag=NOT BorrowForm{Rn – shifter_operand}

V flag=OverflowFrom{Rn – shifter_operand}

4.指令举例

【例6.3】SUB指令举例。

(1)R0=R1-R2

SUB R0, R1, R2

(2)R0=R1-256

SUB R0, R1, #256

(3)R0=R2-(R31)

SUB R0, R2, R3,LSL#1

linux sub指令,数据处理指令之:SUB减操作指令相关推荐

  1. linux的boot可用fat格式吗,u-boot操作指令之FAT 格式文件系统操作命令

    u-boot操作指令之FAT 格式文件系统操作命令 u-boot操作指令之FAT 格式文件系统操作命令 u-boot操作指令之FAT 格式文件系统操作命令 FAT 格式文件系统操作命令 1. fati ...

  2. Linux中的Vi编辑器末行模式操作指令

    一.首先vi有三种工作模式 1.文本模式:进入vi之后默认时文本模式,在指令模式下按下Esc键可以返回到文本模式,此模式下查看文本的内容 2.指令模式:在进入编辑界面后按下i键便可以进入指令模式,在指 ...

  3. ARM体系架构—ARMv7-A指令集:内存操作指令

    ARM体系架构-ARMv7-A指令集 一.ARMv7-A指令集 一.ARMv7-A内存操作指令 二.单寄存器寻址内存操作指令 三.多寄存器寻址内存操作指令 四.SWP,SWPB 一.ARMv7-A指令 ...

  4. 汇编语言--微机CPU的指令系统(五)(字符串操作指令)

    (11)字符串操作指令 字符串操作指令的实质是对一片连续存储单元进行处理,这片存储单元是由隐含指针DS:SI或ES:DI来指定的.字符串操作指令可对内存单元按字节.字或双字进行处理,并能根据操作对象的 ...

  5. 8086CPU指令系统 串操作指令和处理机控制指令

    串操作指令和处理机控制指令小节 串操作指令 1,常见的串操作指令 处理机控制指令 1,标志位操作指令 2,同步控制指令 3,暂停及空操作指令 前言:公号 「编程有料」后台回复 "大礼包&qu ...

  6. ipmitool 设置网关_IPMITOOL常用操作指令

    一.开关机,重启 1. 查看开关机状态: ipmitool -H (BMC的管理IP地址) -I lanplus -U (BMC登录用户名) -P (BMC 登录用户名的密码) power statu ...

  7. 十个效果酷炫的Linux系统操作指令(像黑客帝国般的效果~)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 想想电影黑客帝国中的画面,估计会令很多人都叹为观止,其实最简单的只 ...

  8. linux(ubuntu)~终端(terminal)shell操作指令

    shell是指计算机操作指令,是用户.计算机程序.内核之间沟通的桥梁,是计算机图形化之前操作计算机的方式,现在包含:sh-shell.bash-shell.csh-shell.tcsh-shell.a ...

  9. 鸟哥的 Linux 私房菜7 -- 首次开机关机与基本指令执行

    鸟哥的 Linux 与 ADSL 私房菜 开机.关机.在线求助与指令下达方式 最近更新日期:2004/05/01 第一次登入系统与离开系统 图形模式与文字模式的切换方式 指令下达方式与基础指令练习 在 ...

  10. Linux系统学习: 进程、重定向和管道指令:xargs 指令的作用是

    进程 为了弄清楚这节课程的内容,也就是管道,我们先来讨论一下进程. 我们知道,应用的可执行文件是放在文件系统里,把可执行文件启动,就会在操作系统里(具体来说是内存中)形成一个应用的副本,这个副本就是进 ...

最新文章

  1. 6. Leetcode 11. 盛最多水的容器 (数组-双向双指针)
  2. C++ 2022常见知识点
  3. 如何下载vue.js
  4. gephi java教程_为Gephi准备数据
  5. USB协议详解第9讲(USB描述符-HID描述符)
  6. Mac系统安装consul
  7. HTML中的元素分类
  8. 用JAVA SWING实现简单的折叠组件伸缩功能(不使用JLayeredPane)
  9. 什么是TMD格式?TDM格式详细介绍
  10. 陈艾盐:春燕百集访谈节目第二十一集
  11. S3C2440裸机实战 之一 创建初始工程
  12. 单向链表中查找倒数第K个数
  13. vs2022创建窗口应用程序
  14. JDK源码分析---SortedMap
  15. IDEA打包下载超时(已经配置阿里私服,去中央私服下载)
  16. 模拟电子技术基础实验6.5
  17. 安装mysql没有设置密码,设置密码
  18. 51单片机按键控制数码管0~9_(51单片机)课设项目1-按键控制步进电机转向、转速、启停。...
  19. I2C + 漏极开路与推挽输出
  20. 单片微型计算机原理及应用第三版答案胡乾斌,单片微型计算机原理-胡乾斌--课后习题答案...

热门文章

  1. 关于华硕电脑进入bios
  2. 微服务项目架构演变过程
  3. python中sinxcosy_∫e^x[(1-cosy)dx-(y-siny)dy],其中c为区域 0≤x≤π,0≤y≤sinx的边界曲线取正向.求曲...
  4. 安装X61驱动 xp
  5. (1)asp。net操作ftp,上传和下载 (2) 长时间提交,在提交后禁止页面按钮 (3) 方便的javascript日历
  6. 猿创征文|智能合约开发效率工具
  7. 转行做Linux运维工程师,简历
  8. SQL Server设置SQL Server身份验证
  9. 2021年国产数据库名录和产品信息一览
  10. 浅谈一类积性函数的前缀和