例题.
- 一台模拟机共有7条指令,各指令的使用频度分别为35%,25%,20%,10%,5%,3%,2%。该模拟机有8位和16位两种指令长,采用2-4扩展操作码,8位字长指令为寄存器-寄存器(R-R)二地址类型,16位字长指令为寄存器-存贮器(R-M)二地址变址寻址(-128≤变址范围≤127 )类型。
问.
- 计算操作码的平均码长;
- 该机允许使用多少个可编址的通用寄存器,多少个变址寄存器?
- 设计该机的两种指令格式,标出各字段位数并给出操作码编码。
答.
- 2-4扩展码,2位长度可以编码3条指令,不妨以11作为扩展,4位长可以编码4条指令,已经满足7条指令的要求。平均码长计算:2×(0.35+0.25+0.20)+4×(0.10+0.05+0.03+0.02)=1.6+0.8=2.4;
- 另外也可以考虑2位长度只编码2条指令,留两种编码用作扩展,也能达到7条指令的要求,但会导致平均码长增加。
- 8位和16位指令中并没有说明谁采用短操作码,因此会有两种方案,以8位长指令采用短操作码为例进行分析;
- R-R二地址型指令长度为8位,其中操作码占2位,所以寄存器占3位,共8个通用寄存器;R-M型二地址变址寻址指令长度为16位,其中操作码占4位,寄存器占3位,变址范围为-128~+127,需要8位表示偏移地址,剩余1位用作变址寄存器,变址寄存器有2个;
- R-R型指令:
2位 | 3位 | 3位 |
---|---|---|
操作码OP | 源寄存器R1 | 目的寄存器R2 |
- R-M型指令:
4位 | 3位 | 1位 | 8位 |
---|---|---|---|
操作码OP | 通用寄存器R | 变址寄存器V | 偏移地址offset |
- 若采用相反的指令设计,8位指令中使用长操作码,得到指令格式如下:
4位 | 2位 | 2位 |
---|---|---|
操作码OP | 源寄存器R1 | 目的寄存器R2 |
2位 | 2位 | 4位 | 8位 |
---|---|---|---|
操作码OP | 通用寄存器R | 变址寄存器V | 偏移地址offset |
- 对应的通用寄存器数量为4,变址寄存器数量为16.