3 votes

Pourquoi utilise-t-on des crochets dans LEA ?

Dans l'assemblage, les crochets [] semblent avoir la même signification que * en C le langage de programmation. Ils sont utilisés pour déréférencer un pointeur. Déréférencer un pointeur signifie aller se référer à un emplacement mémoire spécifique pour le lire ou l'écrire.

Il est donc tout à fait logique d'utiliser des crochets dans le cas d'une MOV . Mais quelle est la raison logique pour laquelle ils l'utilisent aussi pour LEA ?

LEA EAX, [EBP -4] ressemble au déréférencement d'un pointeur, EBP - 4 pour faire référence à l'emplacement mémoire pointé, mais il ne lira pas la valeur contenue dans l'emplacement mais plutôt l'adresse.

Je suis un peu confus à ce sujet. Pourriez-vous me donner la bonne façon de penser à ce sujet ?
Fait LEA n'a aucun rapport avec le concept de déréférencement ? Il est clair qu'il ne s'agit pas d'une lecture de la mémoire, mais surtout d'une référence à un emplacement de la mémoire non pas pour sa valeur, mais pour son adresse. Je ne voudrais pas que cela devienne une question philosophique.

5voto

Erik Eidt Points 1397

El LEA est conçue pour ressembler à une instruction d'accès à la mémoire - elle peut donc effectuer toutes les tâches de l'instruction modes d'adressage .  La différence, bien sûr, comme vous le notez est que LEA charge l'"adresse effective" plutôt qu'une valeur mémoire à partir de cet emplacement.

Ainsi, LEA est similaire aux opérations d'accès à la mémoire, mais plus précisément, en termes de C, il s'agit de prendre l'adresse - comme par exemple &a[i] en C. Comme en C avec & le résultat de LEA est toujours une valeur de la taille d'un pointeur plutôt qu'avec des accès réels où nous pouvons récupérer/stocker un octet, un mot, etc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X