例1:
某计算机字长32位,采用三地址指令,支持8种寻址操作,完成60种操作,各寻址方式均可在2K主存范围内取得操作数,并可在1K范围内保存运算结果。问应采用什么样的指令格式?指令字长最少应为多少位?执行一条指令最多要访问多少次主存?
解:
根据题目条件,指令格式如下:
OP=6位
(寻址方式)X1=X2=X3=3位,共9位
(源操作数)A1=A2=11位,(目的操作数)A3=10位,共32位
共47位
指令占两个存储字,取指访存2次,取2个源操作数访存2次,写结果访存一次,共5次
例2:
字长16位,主存64K,指令单字长单地址,80条指令。寻址方式有直接、间接、相对、变址。请设计指令格式
解:
80条指令 ==> OP字段需要7位(2^7=128)
4种寻址方式 ==> 寻址方式特征位2位
单地址址位长度 ==> 16-7-2=7位
指令格式 ==>
设PC寄存器16位,变址寄存器16位
相对寻址 E=(PC)+A,寻址范围 :64K
变址寻址 E=(R)+A,寻址范围 :64K
直接寻址 E=A,寻址范围 :128
间接寻址 E=(A),寻址范围 :64K
设计评价:访问主存的方式太多,缺少立即数寻址
例3:
设某指令系统指令字长16位,每个地址码为6位。若要求设计二地址指令15条、一地址指令34条,问最多还可以设计多少条零地址指令?
需要做操作码扩展
采用将操作码字段扩展到没有使用的地址码字段的指令格式设计方案的主要目的是保持指令长度不变,增加指令数量
解:
操作码按短码到长码进行扩展编码
假定二地址指令编码:(0000-1110)共15条,1111作为扩展标识;
则一地址指令编码的全集可表示为:1111 000000 - 111111(假定扩向A1);
因一地址指令只需34条,可将全集中多余的30种编码作为向零地址指令扩展的标识,假定为:100010 - 111111
故最多可支持的零地址指令数为:30*2^6 条