在简化的计算机中,指令是:
计算机只有两个寄存器,OP要么是ADD要么是SUB。考虑以下基本块:
假设所有操作数最初都在内存中。计算的最终值应该在内存中。为这个基本块生成的代码中 MOV 指令的最少数量是多少?
(一) 2
(乙) 3
(三) 5
(四) 6答案:(乙)
解释:
对于 t2 和 t3 的说明
1. MOV c, t2
2. OP d, t2(OP=ADD)
3. OP e, t2(OP=SUB)
对于 t1 和 t4 的说明
4. MOV a, t1
5. OP b, t1(OP=ADD)
6. OP t1, t2(OP=SUB)
7. MOV t2, a(AS END 值必须在内存中)
如果问题没有要求内存中的最终值而是在寄存器中,则第 6 步应该已经足够了。最后一步需要另一个 MOV,因此总共需要 3 个。
这个问题的测验