某机为定长指令字结构,指令长度16位;……

2022年12月5日修改
原来的博客是 2018-09-21 17:27:41 发布 的啊,MarkDown可能 “ ^ ” 这个符号有特殊含义了,所以以前的公式都乱了……不怪我understand(:

题目:
某机为定长指令字结构,指令长度16位;每个操作数的地址码长6位,指令分为无操作数、单操作数和双操作数三类。
(1)若双操作数指令已有K种,无操作数指令已有L种,问单操作数指令最多可能有多少种?
(2)上述三类指令各自允许的最大指令条数是多少?

解析:
对于双操作数,操作码长度为16-2*6=4位;
已知双操作数已有K种,所以留有(2^4-K)=16-K 个编码给单操作数。

对于单操作数,操作码长度为16-6=10位,可扩展位为6位;

已知无操作数已有L种,设单操作数有Y种,那么有:

L=[(2^4-K)*2^6-Y]*2^6

化简得:

Y=(2^4-K)*2^6-L/(2^6)

所以单操作数指令最多可能有(2^4-K)*2^6-L/(2^6))

(1)已知:双操作数指令已有K种,无操作数指令已有L种,设单操作数有Y种,则

操作数地址码长操作数码长可扩展位指令数种类余下给其他指令的种类数
双操作数指令1240K2^4-K
单操作数指令610双’基础上+6Y=(2^4-K)*2^6-L/(2^6)(2^4-K)*2^6-Y
无操作数指令016单’基础上+6L0

(2)由于必须保证三类指令都要有,所以双操作数、单操作数都必须至少留出1个指令数便于进一步扩展。所以有:
对于双操作数,满足K<=2^4且K为整数,即K=15,要保证最大指令数为2^4-1=15个;

对于单操作数,首先满足1种双操作数,再留有1个指令数给无操作数扩展,即K=1,最大指令数为(2^4-1)*2^6-1=959个;

对于无操作数,首先满足1种双操作数和1种单操作数,即K=1、Y=1,最大指令数为[(2^4-1)*2^6-1]*2^6=2^16-2^12-2^6=61376个

最大指令条数
双操作数指令15
单操作数指令959
无操作数指令61376

注意区别:
A.满足双操作数最大指令条数的情况下,单操作数指令条数最大可为多少?无操作数指令条数最大可为多少?
B.同时满足双操作数/单操作数最大指令条数的情况下,无操作数指令条数最大为多少?

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值