扩展码再思考

来源:互联网 发布:c 低级编程 编辑:程序博客网 时间:2024/05/29 16:18

扩展码再思考

@(组成原理)

之前有总结过比较规整的情况下,如何计算扩展码的问题。同时强调了扩展码要抓住操作码位数扩大的方向,同时是地址减少的方向。

可以类比IP地址子网划分时,子网号扩大,则主机号变少。

本质都是在有限字长上的二进制计算。

http://blog.csdn.net/u011240016/article/details/52717315

再思考一个问题:

某指令系统指令字长是8位。每一地址码长3位,采用扩展操作码技术。若指令系统具有两条二进制地址指令,10条零地址指令,则最多有多少条一地址指令。

分析:按照正常计算顺序,从二地址推导到一地址,再到0地址是非常简单的,因为是等式。但是如果告诉左右两边,求中间,就需要一点点不等式的思想了。

具体如下:首先看,二地址是不是推导的起点,二地址共占用6位,这样只留下2位作操作码,不可能有3地址,因此确定是最多只有二地址。二地址条件下,只有2位操作码,最多四条二地址指令。如果真的是4条二地址指令,问题就来了,就不存在一地址,零地址了。我们说要留个种子,才有扩展。
根据题干,只有2条二地址指令,意味着留了2个种子做下一级的扩展。拿一个3位的地址段,共有23=8个状态,乘上刚才留的两个种子,最多可以有28=16个一地址指令。

同样的道理,如果一地址指令不留一个或多个状态做0地址的扩展种子,就不存在0地址了。而现在是已经知道存在0地址指令,所以,要留状态。那么留几个呢?根据0地址指令个数反推。如果只留一个,那么0地址指令最多是123=8个。不够10个,那么就意味着至少留2个状态做种子。于是一地址最多是162=14

1 0
原创粉丝点击