四条指令的 PC 轨迹
运行下面这段程序,填写它打印出来的结果。
PROG = [0b00001001, 0b01000111, 0b10000011, 0b11000000]
def decode(w):
return (w >> 6) & 3, (w >> 5) & 1, w & 31
def run(prog):
R = [0, 0]
pc = 0
seen = []
while pc < len(prog):
op, rd, imm = decode(prog[pc])
if op == 3:
break
if op == 0:
R[rd] = imm
elif op == 1:
R[rd] = (R[rd] + imm) & 255
else:
R[rd] = (R[rd] - imm) & 255
pc = pc + 1
seen.append(R[0])
return seen
pc = 0
seen = ""
while pc < len(PROG):
op, rd, imm = decode(PROG[pc])
seen = seen + str(pc)
if op == 3:
break
pc = pc + 1
print(seen + "/" + str(pc))
全部评论