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.