2017-09-13 4 views
1

Ist es möglich, eine Adresse mithilfe der indexierten Adressierungsmodus-Syntax zu berechnen und in einem Register zu speichern? So etwas wie der folgenden (falsch) Ausdruck (in AT & T Montage-Syntax):Adresse unter Verwendung des indizierten Adressierungsmodus in das Register verschieben

movl $dataarray(,%edi,8), %eax 

Ich weiß, dass der indizierten Adressierungsmodus verwendet werden kann, um Daten zu verschieben:

movl dataarray(,%edi,8), %eax 

jedoch in diesem Fall , was ich tun möchte, ist die Adresse des Elements von dataarray indexiert von %edi in das %eax Register zu speichern.

+7

Meinst du sowas wie die 'lea' Anweisung? –

+0

@MargaretBloom Ja, tatsächlich. Vielen Dank. – cppstudy

Antwort

2

Wie bereits in this comment vorgeschlagen, kann die lea Anweisung für diesen Zweck verwendet werden:

leal dataarray(,%edi,8), %eax 

diese Weise wird die Adresse (und nicht der Wert an dieser Adresse, wie sie auftreten mit der mov Anweisung) wird berechnet und im eax Register gespeichert.

+0

Vielen Dank für Ihre schnelle Antwort und Erklärung – cppstudy

Verwandte Themen