2010-11-30 4 views
0

Cette question est plutôt naïve. Je joue juste avec l'allocation de mémoire exécutable et l'assemblage manuel d'un code x86 pour l'exécuter. Je suis un peu confus par la façon dont l'adressage fonctionne en mode 64 bits. Si j'ai une variable dans mon code C, et que je veux déplacer le contenu de RAX dans cette variable, quelle forme de l'instruction MOV dois-je utiliser? (Ceci n'utilise pas l'assemblage en ligne, donc je ne peux pas obtenir le compilateur pour le faire, j'ai juste la valeur & var pour jouer avec.)Déplacement du contenu de la variable RAX vers la variable C (x86-64 asm)

Répondre

2

En utilisant la syntaxe Intel, ce sera quelque chose comme mov [var],rax , où var est fondamentalement l'adresse immédiate de 64 bits.

Je pense que ce que Intel appelle MOV moffs64*,RAX dans "Intel® 64 et IA-32 Architectures Manuel du développeur de logiciels".

+0

Un grand merci. Et par les apparences de ceci est seulement possible avec RAX et un petit nombre d'autres registres? – foldl

+1

Il semble que cette forme est RAX-only (en 64 bits de toute façon). – NPE

+1

ce formulaire fonctionnera avec n'importe quel GPR. Ce n'est pas limité à RAX. –

Questions connexes