社区
汇编语言
帖子详情
汇编里怎样才算运算Overflow(溢出)?
SnHnBn
2003-10-16 10:15:55
不好意思,题目没有说完,是MIPS-II指令ADDI这一条,怎样才算Overflow?
是结果小于0,还是7FFFFFFF+n 变成80000000+n-1(如果是带符号的结果),还是FFFFFFFF+n变成0+n-1? (n是一个较小的自然数)
...全文
791
22
打赏
收藏
汇编里怎样才算运算Overflow(溢出)?
不好意思,题目没有说完,是MIPS-II指令ADDI这一条,怎样才算Overflow? 是结果小于0,还是7FFFFFFF+n 变成80000000+n-1(如果是带符号的结果),还是FFFFFFFF+n变成0+n-1? (n是一个较小的自然数)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
SnHnBn
2003-10-30
打赏
举报
回复
楼上,可能你是弱智
pangbo1979
2003-10-30
打赏
举报
回复
CSDN的汇编水平真的很低,哈哈哈哈。。。。。。。。。。。。。。。。。。。。。
垃圾,
这么幼稚的问题懒的解释
SnHnBn
2003-10-26
打赏
举报
回复
应该是哦?不知道是有符号加无符号还是有符号加有符号。
binariman
2003-10-24
打赏
举报
回复
这个和指令有关的,就你说的addi是带符号加,无符号加是addiu
SnHnBn
2003-10-24
打赏
举报
回复
我不明白你指的通用判断是什么意思。我的意思是,x86指令通过一组标志位来让程序自己判断溢出情形,而MIPS指令则固定由指令负责有无符号数判断溢出(溢出的时候,会跳到异常处理程序)。这两者有很大的不同。
liufang36
2003-10-24
打赏
举报
回复
这么说,楼上的同志,你的意思是x86的判断方法并不是通用的?
SnHnBn
2003-10-23
打赏
举报
回复
楼上,MIPS一样用补码方式存储。只不过,x86指令的ADD指令并不区分有无符号,具体的判断依靠多个标志位来判断,也就是说程序可以判断自己的溢出情形。而对于MIPS指令ADDI,它将由指令Cause一个Overflow Exception(类似x86的软中断,要转入处理程序),因此就不象x86由后续指令来根据自己的数据是有无符号数来判断溢出。
也许是我说得不够明白,也许是大家形成了x86指令集的惯性思维。现在,各位大虾应该明白了吧?
SnHnBn
2003-10-22
打赏
举报
回复
没人熟悉MIPS系列指令?要说x86指令还不如MIPS系列指令用途广泛。
Lymtics
2003-10-22
打赏
举报
回复
同意 liufang36(Mason) :
关于溢出.取决于CPU中数的存储方法.
x86的O标志位是根据其数存储方法而定的...
TO:SnHnBn(大可达) :
我理解的是如果是有符号数运算,结果也是符号数,那么两个负数相加,得到一个正数,或者两个正数相加,得到一个负数,这就算溢出。
如果是无符号结果,其中一个操作数是无符号数,另一个是有符号数,那么无符号数加上一个负数如果结果比这个无符号数还大,或者无符号数加上一个正数结果比这个无符号数还小,也是溢出。
如果允许有符号数加无符号数的指令存在,要分辨指令的执行结果.就必须加入更多的标志位..否则指令系统将遭到极大的破坏,得不偿失啊.我对x86的指令系统比较熟悉.在不增加现有算术运算标志位的情况下,有符号数加无符号数是不可实现的...不知道MIPS中是怎么回事...
还有如果你给出MIPS中数的存储方法,大家也许就可以判断出(不)溢出的条件...
liufang36
2003-10-22
打赏
举报
回复
按照教科书中的解释,是否溢出应该取决于cpu中的标志位OF,OF=0则不溢出,OF=1则溢出。
而OF等于Cs同或Cp.而Cs与Cp分别为计算的最高位与此高位是否有进位。(在8086种共16位)
SnHnBn
2003-10-21
打赏
举报
回复
还是不明白你说什么。
我理解的是如果是有符号数运算,结果也是符号数,那么两个负数相加,得到一个正数,或者两个正数相加,得到一个负数,这就算溢出。
如果是无符号结果,其中一个操作数是无符号数,另一个是有符号数,那么无符号数加上一个负数如果结果比这个无符号数还大,或者无符号数加上一个正数结果比这个无符号数还小,也是溢出。
我不管编成的人如何处理,反正如果结果溢出的话,这条指令就会产生一个Overflow异常。对于x86类似的指令则产生一个溢出标志位。
hswxf
2003-10-20
打赏
举报
回复
也许是我说的远了一点
规格化是对数码而言的,对这条指令主要有的也只有一条:
你用的是符号数还是#%%%¥¥……
只有符号数才有上述的
没有的话只有数值范围的溢出,这不是一条指令产生的,而是编程的人是如何处理的,就是DOS下的溢出也可以用程序控制
标志?多呢¥655676#¥¥……
SnHnBn
2003-10-20
打赏
举报
回复
楼上,我知道浮点数的规格化,对于这条整数指令,我的确不知道规格化指的是什么,请指教。
hswxf
2003-10-19
打赏
举报
回复
一般的出错主要是由于符号位产生的
当然也有数据表达范围产生
溢出时并不是简单的移位
你知道什么是规格化吗?
SnHnBn
2003-10-18
打赏
举报
回复
自己 up, 没人知道就把分散给帮忙up的人。
baobeixiong
2003-10-17
打赏
举报
回复
up
W32API
2003-10-17
打赏
举报
回复
运算的数据类型是由你所选取的指令决定的。
W32API
2003-10-17
打赏
举报
回复
不是,只要目标寄存器容纳不下结果就算溢出。
SnHnBn
2003-10-17
打赏
举报
回复
“目标寄存器容纳不下结果就算溢出”--------- 说了等于没说。
说简单点就是,我想知道MIPS-II指令ADDI把它的第一个加数当作是带符号数,还是无符号数。只有先搞懂这一点,才能判断是否“容纳不下结果”。
hswxf
2003-10-17
打赏
举报
回复
溢出有二种情况:
1、溢出不出错:
这在数码的规格化或校正后可以恢复(不好表达)的,溢出但结果还是正确的。一般出在符号位与校验位上
2、溢出就产生产生错误
数码不可以恢复
具体在编程中出现的溢出,情况是比较复杂的楼上说的对,但贴主说的是只在IBM汇编中的情况吗?
加载更多回复(2)
汇编
语言(ASM)从入门到精通
8088
汇编
跳转 一、状态寄存器 PSW(Program Flag)程序状态字寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成,如下所示: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF TF SF ZF AF PF CF...
如何更快地判断
算
术
运
算
有没有
溢出
?
因此在代码中检测是否
溢出
是一件很有必要的事,那么该如何检测
算
术
运
算
中的
溢出
呢? 以C语言中的
算
术乘法为例,可以使用以下的代码检测是否有
溢出
: //判断a与b的乘积是否
溢出
,是返回-1,否返回0 int
overflow
(int ...
反
汇编
初级教程
这套课程是反
汇编
系列课程的基础阶段,后期将陆续推出反
汇编
进阶及反
汇编
课程。整套反
汇编
课程的教学目标是为了让大家能够窥息计
算
机程序世界的奥妙,为将来成为一名合格的大Hacker打下夯实的基础。 反
汇编
技术在...
贺利坚老师
汇编
课程54笔记:OF
溢出
标志
OVERFLOW
FLAG
在进行有符号数
运
算
的时候,如果结果超出了机器所能表示的范围称为
溢出
OF记录有符号数操作执行指令后 有
溢出
,OF = 1,OV/
Overflow
无
溢出
,OF = 0,NV/Not
Overflow
assume cs:codesg codesg segment start: ...
溢出
(
Overflow
)和进位(Carry)的区别。
溢出
(
Overflow
):
溢出
发生在有符号数的
运
算
中。当有符号操作结果超出了有符号数的表示范围时,即结果无法用有限位数表示时,会发生
溢出
。例如,在有符号的加法或减法中,如果操作结果超出了数据类型所能表示的范围...
汇编语言
21,458
社区成员
41,603
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章