将下面的代码翻译成机器代码并显示生成指令时,寄存器和地址描述符。(假设有两个寄存器可用:R0和R1)
D : = B - C
E : = A - B
B : = B + C
A : = E - D
我试过这样做:
MOV B,R0
SUB C,R0
MOV A,R1
SUB B,R1
——R0包含D——R1包含E
我不能从这里继续。由于B在块中没有下一次使用(从第3行开始),那么下面的代码将如何显示?
假设有一些关于处理器的基本知识:
您已经完成了D := B - C
-只需将结果存储到D
中以完成。
MOV B,R0
SUB C,R0
MOV R0,D
现在所有的寄存器都再次可用(尽管如果您碰巧再次需要D
,则在R0
中有一个副本-尽管考虑到有限的寄存器和要完成的其他计算,这很难利用)。
我怎么知道移动到内存是可能的?我没有,但基于有根据的猜测,有mov A,R0
,但没有mov R0,A
,这将是非常奇怪的。