2017-12-29 12 views
0

Was ist der Unterschied zwischen einem Live-In- und Live-Out-Register?Unterschied zwischen einem Live-In und Live-Out eines Registers für einen Befehl

Mein Verständnis ist, dass ein Live-Out-Register bedeutet, dass das in der aktuellen Zeile angegebene Register eine Variable enthält, die nicht von seiner nachfolgenden Zeile geändert wird.

Hier einige Maschinencode von meinem Compiler Prüfung, die

L0 : lim z, 0 
L1 : jmp L6 
L2 : sub x, x, y 
L3 : mov t, z 
L4 : lim z, 0 
L5 : addi z, t, 1 
L6 : blth y, x, L2 

Antwort

1

Die kurze Antwort ist eine Antwort helfen könnte, dass für eine gegebene Anweisung im Programm, ein Register live-in ist, wenn es leben, bevor die Anweisung ausgeführt wird, und es ist live, wenn es nach der Ausführung der Anweisung aktiv ist.

Um von Anfang an zu beginnen, ist ein Register an einem bestimmten Punkt im Programm aktiv, wenn sein Inhalt verwendet wird, bevor das Register zurückgesetzt wird. Als ein Beispiel, an dem Punkt zwischen L2 und L3, ist das Register z aktiv, da es in der Zukunft (von L3) verwendet wird, aber t ist tot, da t nicht verwendet wird, bevor der Wert geändert wird. Dies bedeutet, dass z für L3 live-in ist und für L2 live-out, während t nicht ist.

Verwandte Themen