(%eax,%edx,1) ne signifie pas (%eax + %edx + 1) mais (%eax + (%edx * 1)).
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:
# Adressage mémoire: offset(base,index,scale)
Posté par galactikboulay . En réponse au message assembleur gdb. É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(...)