设某机为定长指令字结构,指令长度12位,每个地址码占3位,试提出一种分配方案……

2022年12月13日修改
原来的博客是 2018-09-21 17:34:47 发布 的啊,偶尔也有人让详细讲讲……行吧……

题目:
设某机为定长指令字结构,指令长度12位,每个地址码占3位,试提出一种分配方案,使该指令系统包含:4条三地址指令,8条二地址指令,180条单地址指令。

解析:
Step1.指令系统的指令格式是:指令 = 操作码 + 地址码

Step2.“已知每个地址码占3位”,所以:
三地址指令的地址码共占33=9位,
二地址指令的地址码共占3
2=6位,
单地址指令的地址码共占3*1=3位。

Step3.“已知指令长度为12位”,所以:
三地址指令的操作码共占12-9=3位,
二地址指令的操作码共占12-6=6位,
单地址指令的操作码共占12-3=9位。

Step4.综上Step2和Step3,设a代表操作码位、b代表地址码位。所以:
三地址指令格式为 aaa bbbbbbbbb,
二地址指令格式为 aaaaaa bbbbbb,
单地址指令格式为 aaaaaaaaa bbb。

Step5.“要求指令系统包含4条三地址指令、8条二地址指令、180条单地址指令,x代表地址码位。”所以分配如下:

  1. 三地址指令
    4=2^2,所以操作码从从000开始,至011结束,即三地址指令为000 xxxxxxxxx 至 011 xxxxxxxxx。
  2. 二地址指令
    8=2^3,但是操作码位前3位不能与三地址指令的操作码相同,故从011的下一个100开始,操作码位的后3位从000开始,111结束,即二地址指令为100 000xxxxxx 至 100 111xxxxxx
  3. 单地址指令
    2^7=128 < 180 < 256,同理操作码前3位不能与三地址/二地址指令的操作码前3位相同,故从100的下一个101开始,操作码位的后6位从000000开始。
    然而,指令101 000000xxx 至 101 111111xxx 只能容纳2^6=64条指令,因此操作码前3位自动加1,即110,此时指令为110 000000xxx。
    因此,单地址指令的前64种为 101 000000xxx 至 101 111111xxx;
    单地址指令的第65种至第128种为 110 000000xxx 至 110 111111xxx;
    单地址指令的第128种至第180种为 111 000000xxx 至 111 110011xxx。

综上所述,指令系统的分配方案如下:

  • 三地址指令:000 XXX XXX XXX 至 011 XXX XXX XXX
  • 二地址指令:100 000 XXX XXX 至 100 111 XXX XXX
  • 单地址指令:101 000 000 XXX 至 111 110 011 XXX
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值