《计算机系统概论》-第5章-习题答案( 三 )


ADD R1,R2,R3
BRz #5 (如果R1=0,则直接跳转到最后结束语句)
BRn #1 (如果R1 BRp #3 (如果R1>0,则跳转到下面第4条语句)
ADD R1,R3,#0
BRnzp #1(跳转最后一条语句)
ADD R1,R2,#0
TRAP x25给你一个任务,设计下一代的LC-3 。要求是:为ISA增加16个新指令,并将寄存器组的数目从8个增加至16个 。机器要具备1个字节的基本寻址能力,且内存寻址空间大小为64K字节 。指令的大小任然是16-bit 。指令的格式如原来的16位格式一样,具有相同的5个字段,只是你可以适当地调整各个字段的宽度 。问:
a. PC的宽度至少是多少位,才能保证访问整个地址空间? 216=65536=64K,所以至少需要16-bits
b. 运算指令中,可表达的最大立即数是多少?4-bits
c. 如果我们需要TRAP指令提供128个操作系统服务程序,且通过将左移5位,直接形成这些服务程序的入口地址,试计算一下这些服务程序所需要占用的最小内存大小 。
d. 如果在新的LC-3中,我们将寄存器数目从8个减至4个,但操作码数目仍然保持为16个,试问在新的机器上,ADD指令所能表示的最大立即数值是多少?如果在5.3.5节的7行代码的例程执行之前,R2的内容为xAAAA 。那么在7条指令的执行过程中,R2的内容共有多少种数值?列举出来 。事实上我们“确实”没有必要提供“load (1010)”和“store (1011)”指令,因为我们可以通过其他指令的组合来完成相同的任务 。试用一组指令序列替换下面程序中的store操作(1011) 。
LC-3有一个指令“LDR DR,BaseR,” 。在这个指令被译码之后,则产生下面一些操作(或称为“微指令”()):
假设LC-3要引入一个新指令“MOVE DR,SR”,即将地址为SR的内存单元内容拷贝至地址为DR的内存单元 。问:
a. MOVE指令并不是必需的,因为它能完成的工作通过LC-3现有的一组代码组合也可以完成(又称为仿真()) 。试写出(或仿真)“MOVE R0,R1”指令的LC-3代码;
b. 如果LC-3真的添加了MOVE指令,试写出它的微指令序列(从译码完成之后开始) 。下面表格显示的试LC-3内存的部分内容:
如果其中的条件跳转指令又跳转至x3100,那么,你能推测出有关R0和R1的什么信息?如图所示是8个寄存器在x1000指令执行之前和执行之后的快照(),试通过寄存器的变化对比,推测该指令是一条什么指令(填空)?假设在下面代码序列执行之前,条件码的值为N=0,Z=0,P=1 。问执行之后,他们的值是多少?如果下面代码执行之后R0的内容为5,试推测有关R5的内容会是怎样的 。基于图5-18画出的全部数据通路,指出图5-4与NOT指令执行相关的功能单元 。基于图5-18画出的全部数据通路,指出图5-4与ADD指令执行相关的功能单元 。基于图5-18画出的全部数据通路,指出图5-4与LD指令执行相关的功能单元 。基于图5-18画出的全部数据通路,指出图5-4与LDI指令执行相关的功能单元 。基于图5-18画出的全部数据通路,指出图5-4与LDR指令执行相关的功能单元 。基于图5-18画出的全部数据通路,指出图5-4与LEA指令执行相关的功能单元 。图5-19所示是LC-3的局部图,试回答标识为A的信号的作用是什么?图5-2-所示是LC-3的局部实现逻辑 。
a. 信号Y提供的是什么信息?
b. 信号X是锁存器D的“门控”(gated)信号,请问X信号的产生逻辑是否存在错误?LC-3开发组(macho-)决定利用备用的操作码1101实现一个新指令 。他们要在下面的各个候选中,挑选一个最适合的:
a. MOVE Ri,Rj;将Rj的内容拷贝至Ri;
b. NAND Ri,Rj,Rk;Ri是Rj和Rk的按位(bit-wise)NAND结果;
c. SHFL Ri,Rj,#2;Rj内容左移2位的结果存入Ri;