mov (%eax,%edx,1),%dl
J'ai un doute sur la signification de (%eax,%edx,1)
Je pense qu'il s'agit de récupérer la valeur placée a l'adresse (%eax + %edx + 1)
mais dans l'incertitude et afin de ne pas partir sur une mauvaise voie, je demande votre avis.
Merci d'avance
# Et non perdu...
Posté par Edouard Gomez (site web personnel) . Évalué à 7.
D'apres: http://www.gnu.org/software/binutils/manual/gas-2.9.1/html_mono/as.(...)
un triplet se lit (base, offset, scale) ce qui en C donnerait *(base + offset*scale) pour un pointeur base char* (car sinon en C l'offset 'offset*scale' serait multiplié par la taille du type pointé).
Voila
# Adressage mémoire: offset(base,index,scale)
Posté par galactikboulay . Évalué à 4.
Le dernier paramètre est un multiplicateur qui peut valoir 1, 2, 4 ou 8.
Pour spécifier un offset, c'est avant la parenthèse ouvrante.
Donc pour écrire (%eax + %edx + 1) ça serait: +1(%eax,%eax,1)
Quelques explications sur GAS / assembleur inline GCC:
http://www-106.ibm.com/developerworks/library/l-ia.html(...)
http://www.opennet.ru/base/dev/gccasm.txt.html(...)
# Merci
Posté par errno . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.