免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: janusle
打印 上一主题 下一主题

为什么没有设置CF? [复制链接]

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
11 [报告]
发表于 2007-04-26 22:41 |只看该作者

原帖由 beepbug 于 2007-4-26 21:04 发表于 10楼  


哪谁来设置标志位呢?标志位自己判别的?你把概念搞混了。
先要有判断。按照判别,设置标志位。设置标志位,是为了告诉后续操作或其它部件(譬如陷阱),这次计算发生了溢出。
当然变形码并非唯一做法。我 ...

什么叫9位ALU呢?我没有这个概念。如果8位+8位得到9位,在我眼里,那依然是8位ALU。
比方32位乘法,得到64位,不好说这是64位乘法器吧。
可以负责的说,标志也是电路输出,不只是计算结果而已。
对于补码运算(一般补码运算电路设计比较方便),有无符号都可以使用同一组合电路。
另外,可以解释一下变形码吗?英文怎么说?

论坛徽章:
0
12 [报告]
发表于 2007-04-28 12:13 |只看该作者
对不起,这个英文忘了。但是,我可以把问题说清楚。
本来,楼主的问题和溢出无关。这两数相减,无论是看作有符号,还是去符号,都不会溢出。
为了说明这里没有溢出,我说了CPU是如何判断溢出的。
我们可以利用逻辑运算来判断是否发生了溢出,逻辑表达式是:
溢出=x0 y0 z0 + x0 y0 z0
但是,这要每做一次加法即做一次这样的逻辑运算,会导致CPU效率严重下降。利用变形码,效率较高。
把补码变成变形码,也叫符号位扩展,就是把原来一个符号位变成两个相同的符号位。符号位为0的变成00,为1的变成11。
再举一个会溢出的加法例子。在8位机里,
54H→01010100(补码)→001010100(变形补码)
37H→00110111(补码)→000110111(变形补码)
两变形补码都是9位。
  001010100
+)000110111
---------
  010001011
两符号位是01,正溢出。
-54H→10101100(补码)→110101100(变形补码)
-37H→11001001(补码)→111001001(变形补码)
两变形补码都是9位。
  110101100
+)111001001
---------
  1101110101
最左边的1丢弃。两符号位是10,负溢出。
-5→11111011(补码)→111111011(变形补码)
-3→11111101(补码)→111111101(变形补码)
两变形补码都是9位。
  111111011
+)111111101
---------
  1111111000
最左边的1丢弃。两符号位是11,没有溢出,结果是-8。
变形码和标志位是两码事。对变形码两符号的检查,设置标志寄存器里的溢出位。

论坛徽章:
0
13 [报告]
发表于 2007-04-28 12:19 |只看该作者
采用变形码的机器,在ALU里,符号位是两位的。这样,8位CPU,里面的ALU是9位。

北工大李大友讲的原理比较透彻。他能讲到门电路一级。这样就一定会讲到变形码。

不知道哪去找他的教材。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP