使用有限的可用寄存器生成目标代码



将下面的代码翻译成机器代码并显示生成指令时,寄存器和地址描述符。(假设有两个寄存器可用: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,这将是非常奇怪的。

相关内容

  • 没有找到相关文章

最新更新