将下面的代码翻译成机器码,并在生成指令时显示寄存器和地址描述符。(假设有两个寄存器可用: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行开始),下面的代码会是什么结果?
gwbalxhn1#
假设有一些关于处理器的基本知识,并给出您的尝试:D := B - C几乎已经完成-只需将结果存储到D中即可完成。
D := B - C
D
MOV B,R0 SUB C,R0 MOV R0,D
现在所有的寄存器又都可用了(不过如果您碰巧又需要立即使用D,那么R0中就有一个副本--不过,考虑到有限的寄存器和要执行的其他计算,这一点很难利用)。我怎么知道转移到内存是可能的呢?我不知道,但是根据有根据的猜测,有mov A,R0,而没有mov R0, A是非常奇怪的。
R0
mov A,R0
mov R0, A
1条答案
按热度按时间gwbalxhn1#
假设有一些关于处理器的基本知识,并给出您的尝试:
D := B - C
几乎已经完成-只需将结果存储到D
中即可完成。现在所有的寄存器又都可用了(不过如果您碰巧又需要立即使用
D
,那么R0
中就有一个副本--不过,考虑到有限的寄存器和要执行的其他计算,这一点很难利用)。我怎么知道转移到内存是可能的呢?我不知道,但是根据有根据的猜测,有
mov A,R0
,而没有mov R0, A
是非常奇怪的。