目标代码生成 — 计算机选择题
题目
某目标机有两个寄存器 R0、R1,支持指令 LD R,m(将内存单元 m 的值装入 R)、ADD R,m(令 R←R+m)、SUB R,m(令 R←R−m)和 ST m,R(将 R 的值写入 m);指令均不改变未指定的寄存器。现需生成三地址语句 t := a − b + c,要求结果存入 t,且不得覆盖 a、b、c。以下哪段代码正确?
A. LD R0,a;SUB R0,b;ADD R0,c;ST t,R0
B. LD R0,a;SUB R0,b;LD R1,c;ADD R0,R1;ST t,R0
C. LD R0,b;SUB R0,a;ADD R0,c;ST t,R0
D. LD R0,a;ADD R0,b;SUB R0,c;ST t,R0