ADDI、ADDIU:加立即数,区别在于是否检测溢出。

Format: ADDI rt, rs, immediate
To add a constant to a 32-bit integer. If overflow occurs, then trap.

Format: ADDIU rt, rs, immediate
To add a constant to a 32-bit integer

ADD、ADDU:加寄存器,区别在于是否检测溢出。

Format: ADD rd, rs, rt
To add 32-bit integers. If an overflow occurs, then trap.

Format: ADDU rd, rs, rt
To add 32-bit integers

可知,在忽略溢出的前提下,ADDI与ADDIU等价,ADD与ADDU等价。原因如下:

分析

1、忽略溢出,addi与addiu等价

addi是加立即数指令,支持溢出检测,具体表现为:遇到溢出时,溢出错误标志变为高电平,传送到控制器cu中,导致此时的寄存器写使能信号regwr无效,最终结果为不将运算结果写入目的寄存器。

addiu是加立即数指令,不受溢出限制,具体表现为:遇到溢出时,对溢出的结果进行32bit求模,将求模结果写入目的寄存器中,因而不受溢出限制。

在忽略溢出的前提下,addi和addiu都能计算出溢出后的结果(进行32bit求模),并且将结果写入目的寄存器中,因此二者是等价的。

2、忽略溢出,add与addu等价

Add是将rs与rt中的值相加,结果存储在rd寄存器中。检测溢出。如果不溢出,将结果存储在rd寄存器中,如果溢出,抛出溢出异常,不改变rd中的值。

Addu是将rs与rt中的值相加,结果存储在rd寄存器中。不检测溢出,如果溢出,不会抛出异常。
add是有符号数加法,addu是"无符号数"加法,但是对于cpu来说,都是一样的,不管有没有符号位,都是从最低位加,进位,一直到最高位。

在忽略溢出的条件下,无论是否溢出,二者都将计算结果存入rd中,因此二者是等价的。

所以我的结论是:

对于CPU来说,有符号或者无符号都不重要。他们的运算都是一样的,不管有没有符号位,都是从最低位加,进位,一直到最高位,区别在于是否具有溢出检测。

所以,ADDADDU都可以适用于有符号/无符号数的加法,其区别只是是否具有溢出检测

附:四个指令的官方定义

MIPS32 Architecture For Programmers这本书中,对于这四个指令的定义如下:

ADDI

ADDIU

ADD

ADDU

【MIPS汇编】ADDI,ADDIU,ADD,ADDU的区别、有符号无符号的谬误相关推荐

  1. 计算机中符号位正负,负数在计算机中的表示+有符号无符号的区别+负数按位运算...

    部分转载自:https://blog.csdn.net/kebi007/article/details/89741960 一.负数的二进制位表示法 原码:一个整数按照绝对值的大小转换成的二进制数,称为 ...

  2. 负数在计算机中的表示+有符号无符号的区别+负数按位运算

    部分转载自:https://blog.csdn.net/kebi007/article/details/89741960 一.负数的二进制位表示法 原码:一个整数按照绝对值的大小转换成的二进制数,称为 ...

  3. 无符号整型和有符号整型的区别,以及无符号整型的使用

    有符号整型: 无符号整型: 注意: 无符号数据表示数量,只有正值 unsigned无符号标识不会改变数据类型的字节大小 无符号型数据打印要将之前的%d,全部替换成%u,如果在vs中没有注意转换,将无符 ...

  4. linux mips汇编指令集,MIPS汇编与指令

    一.MIPS寄存器 MIPS的系统结构及设计理念比较先进,其指令系统经过通用处理器指令体系MIPS I.MIPS II.MIPS III.MIPS IV.MIPS V,以及嵌入式指令体系MIPS16. ...

  5. mips汇编计算开方_清华考研辅导班-2020清华大学912计算机专业基础综合考研经验真题参考书目...

    清华大学912计算机专业基础综合考试科目,2020年初试时间安排为12月22日下午14:00-17:00业务课二进行笔试,清华大学自主命题,考试时间3小时. 一.适用院系及专业 清华大学计算机科学与技 ...

  6. MIPS介绍与MIPS汇编的常用指令

    描述 CTF做题时会遇见MIPS汇编的题目,而我们接触的是8086汇编,IDA是不能反汇编的需要自己了解一些MIPS方面的知识; 1. List 1 在不同的设备中,汇编语言对应着不同的机器语言指令集 ...

  7. 【汇编语言与计算机系统结构笔记17】MIPS 汇编初步

    本次笔记内容: 25.MIPS汇编初步-1 26.MIPS汇编初步-2 27.MIPS指令集与汇编程序设计 注:我找到了对应内容的课件,请见我于GitHub的CS笔记仓库.因此,为了节省时间,我只记录 ...

  8. 计算机组成原理之MIPS汇编:冒泡排序

    一. 实验目的 认识和掌握MIPS汇编语言程序设计的基本方法: 熟悉PCSpim模拟器的使用. 二. 实验内容 从键盘输入10个无符号字数并从大到小进行排序,排序结果在屏幕上显示出来. 三. 实验器材 ...

  9. 寄存器(3)KDB入门+MIPS汇编及汇编代码详解

    KDB入门和MIPS汇编 1. KDB 介绍及进入退出命令 1.1 KDB 介绍 1.2 进入KDB及退出KDB 2. KDB 调试 2.1 断点类 2.2 内存操作类 md 2.3 堆栈跟踪类 2. ...

最新文章

  1. 通过conda命令卸载已安装的各种包
  2. button 与 input type=button 的区别【2012/07/23】
  3. 1.8 Boolean类
  4. 8 分钟了解 Kubernetes
  5. step1 . day8 C语言基础练习之指针和函数
  6. 解决Springboot文件上传报错,java.io.FileNotFoundException: D:\System\Temp\tomcat.819...00.tmp (系统找不到指定的文件。)
  7. java网页截图_Java实现的简单网页截屏功能示例
  8. 求助!C++ 实践之引入外部头文件失败
  9. 廖雪峰 - nodejs教程
  10. linux 查看各个用户下线程使用情况
  11. unity使用html播放器,Unity Web Player and browser communication Unity网络播放器和浏览器通信...
  12. python 调用海康linux下psdatacall_demo,实现获视频取码流并返回到python,以及上传信息到人脸库的方法
  13. 微信小程序图片转换成文字_涨知识!这个微信小程序,能将纸上文字转换成电子版...
  14. Unity SteamVR锁定头盔位置旋转
  15. 客观评价,一起看看iPhone 12是否值得你入手?
  16. [ ECUG 专题回顾]《再谈 CERL:详论 GO 与 ERLANG 的并发编程模型差异》-许式伟(七牛云存储 CEO)...
  17. strus2常用标签自己一点小小的应用
  18. ASP.NET Core 3.x 学习笔记(7)——Blazor
  19. QQ出现大规模盗号,为什么会这样?就没有解决方法了吗?
  20. 微信小程序 TypeError: r.apply is not a function

热门文章

  1. android debug bridge tools_如何优雅的管理多环境下的Android代码
  2. BorderDet论文解读
  3. Docker教程-简介
  4. linux wine运行效率,Wine 3.0让Windows应用在Linux上流畅运行!
  5. 绕过360安全卫士的部分代码
  6. 内核隐藏进程(源码)
  7. 网狐棋牌(六) DataBaseEngine 和 网狐棋牌(七) CEventService
  8. C++ 泛型编程(一):模板基础:函数模板,类模板,模板原理,模板匹配规则
  9. C语言程序设计 | 结构体,枚举,联合
  10. C++学习路线和参考资料