算术运算

二进制加法和减法

运算规则略
判断是否溢出

操作操作数A操作数B结果溢出的条件
A+B>=0>=0<0
A+B<0<0>=0
A-B>=0<0<0
A-B<0<0>=0

在MIPS中采用两种方法监测是否溢出

  • 加法、立即数加法和减法,在溢出时产生异常
  • 无符号加法、立即数无符号加法和无符号减法,溢出时不发生异常。
    做加减法运算等的硬件是算术逻辑单元
    相关概念:
  • 算术逻辑单元(ALU):用于执行加法、减法,逻辑运算等操作的硬件。
  • 异常:也叫中断,一种打断正常程序执行过程的事件,用于检测溢出。
  • 中断:来自处理器外部的异常。
浮点数

浮点数是二进制小数点不固定的表达数的计数法。

  • 浮点表示:浮点表示要在尾数和指数位宽之间权衡,保证精度和表示范围。
    尾数:位于浮点数的尾数字段,其值在0和1之间。
    指数:位于浮点数的指数字段,表示小数点的位置。
    浮点数溢出:是上溢,正的指数太大而导致指数域放不下的情况。
    下溢:负的指数太大而不能在质数域中表示出来。
  • 双精度
    除了上述表示,还有双精度表示,提高到64位,指数有11位,尾数有52位。
    浮点数实际是在IEEE 754中规定的,隐藏了规格化二进制数的前导位1。所以在单精度下,数有24位宽,双精度有53位宽。但是0除外。
    数的标识为: ( − 1 ) s × ( 1 + F ) × 2 E (-1)^s×(1+F)×2^E (1)s×(1+F)×2E,F是0-1之间的数,E是指数域中的值。
    在指数表示时,用了带偏阶的计数法,将最小的负数计为 0000..0 0 2 0000..00_2 0000..002,最大的正指数表示为 11111..1 1 2 11111..11_2 11111..112,规定单精度的偏阶为127,双精度为1023目的是为了将指数表示去掉符号位。
浮点数加法

在这里插入图片描述
在这里插入图片描述

浮点数乘法
  • 计算新的指数,两个指数相加,减去一个偏阶
  • 有效数乘法
  • 规格化
  • 舍入,并检验是否规格化及溢出与否
MIPS中的浮点数指令
  • 浮点单精度加:add.s;浮点双精度加:add.d
  • 浮点单精度减:sub.s;浮点双精度减:sub.d
  • 浮点单精度乘:mul.s;浮点双精度乘:mul.d
  • 浮点单精度除:div.s;浮点双精度除:div.d
  • eq、neq、lt、le、gt、ge分别为等于、不等于、小于、小于等于、大于、大于等于,用于替换c.x.s和c.x.d中的x,表示比较
  • 浮点比较为真跳转bclt,为假跳转bclf
浮点数的精确性

浮点数不能精确的表示实数,因为在0和1之间的实数有无穷个,但浮点数表示的有限。因此规定了舍入模式,在中间计算中,多保留两位,分别为保护位和舍入位。

  • 保护位:在浮点数中间计算中,在最右边多保留的两位中的首位,用于提高舍入的精度
  • 舍入位:在浮点数中间计算中,在最右边多保留的两位中的第二位,使浮点中间结果满足浮点格式,得到最接近的数。

此外:

  • 粘贴位:同保护位和舍入位一样用于舍入的位,当舍入位右边有非零的数据时将其置为1.
  • 尾数最低位:在实际数和能表达的数之间的有效数最低位上的误差位数。
  • 混合乘加:一条浮点指令,其执行一次乘法和一次加法,但只在执行加法后才进行舍入。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

up-to-star

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值