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

de90aj5v  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(99)

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

--R 0包含D -- R1包含E
我不能从这里继续,因为B在代码块中没有下一次使用(从第3行开始),下面的代码会是什么结果?

gwbalxhn

gwbalxhn1#

假设有一些关于处理器的基本知识,并给出您的尝试:
D := B - C几乎已经完成-只需将结果存储到D中即可完成。

MOV B,R0
SUB C,R0
MOV R0,D

现在所有的寄存器又都可用了(不过如果您碰巧又需要立即使用D,那么R0中就有一个副本--不过,考虑到有限的寄存器和要执行的其他计算,这一点很难利用)。
我怎么知道转移到内存是可能的呢?我不知道,但是根据有根据的猜测,有mov A,R0,而没有mov R0, A是非常奇怪的。

相关问题