Ich bin ein wenig verwirrt darüber, wie Variablen in Assembly implementiert werden. Ich weiß, dass die folgende Erklärung eine benannte Speicherstelle im data
Abschnitt des Programms erstellt:Wie werden Baugruppenvariablen implementiert?
.section .data
var:
.long 23
Dann können Sie die Variable zugreifen wie:
movl var, %eax //read from var location
Was ich nicht klar bin auf, wie die Die obigen Anweisungen sind tatsächlich implementiert. Ich hatte den Eindruck, dass eine Speicherreferenz, sogar eine absolute Speicherreferenz, in ein Register geladen werden musste, bevor sie verwendet werden konnte.
Hat der Monteur braucht die obige Anweisung in mehrere Anweisungen, wie zu konvertieren:
leal var, %ebx
movl (%ebx), %eax
Oder hat der Monteur den Überblick über die Adresse var
und diesen Ort zugreifen, als ob es ein absoluter direkter Zugang waren zB:
movl ($addr_of_var), %eax
Nein. Sie haben ein Missverständnis der Anforderungen. Sie müssen die Adresse nicht in ein Register laden. Sehen Sie sich die Befehlsreferenz für die MOV-Befehlsfamilie an. –