2017-09-13 6 views
1

Est-il possible de calculer une adresse en utilisant la syntaxe du mode d'adressage indexé et le stocker dans un registre? Quelque chose comme ce qui suit (mauvaise) expression (AT & T syntaxe de montage):adresse Move pour vous inscrire en utilisant le mode d'adressage indexé

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

Je sais que le mode d'adressage indexé peut être utilisé pour déplacer des données:

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

Cependant, dans ce cas , ce que je veux faire est de stocker l'adresse de l'élément de dataarray indexé par %edi dans le registre %eax.

+7

Voulez-vous dire quelque chose comme l'instruction 'lea'? –

+0

@MargaretBloom Oui, en effet. Je vous remercie. – cppstudy

Répondre

2

Comme nous l'avons suggéré dans this comment, l'instruction lea peut être utilisé à cette fin:

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

De cette façon, l'adresse (et pas la valeur à cette adresse, comme il se produit avec l'instruction mov) est calculée et stockée dans le registre eax.

+0

Merci pour votre réponse rapide et votre explication – cppstudy