Qu'est-ce que le support dans `movl (% eax),% eax` moyenne?
Question
J'ai assez googlé mais ne pouvait pas comprendre ce que les moyens de ()
de support. De plus, je vois une syntaxe comme movl 8(%ebp), %eax
Aurait-on quelqu'un me suggérer une bonne référence? Je n'ai pas pu trouver dans le top 20 des résultats de Google.
La solution
%eax
est registre EAX; (%eax)
est l'emplacement de mémoire dont l'adresse est contenue dans le registre EAX; 8(%eax)
est l'emplacement de mémoire dont l'adresse est la valeur de EAX plus 8.
Autres conseils
http: //web.archive .org / web / 20080215230650 / http: //sig9.com/articles/att-syntax est l'introduction rapide dans Unix (AT & T) syntaxe asm. Googlé par at&t asm syntax
.
Le poste est "AT & T Assemblée Syntaxe" par Vivek (
pointeurs de segment offset sont spécifiées en utilisant le format suivant: Il recommande également que gnu (gaz) docs: http://web.archive.org/web/20080313132324/http://sourceware.org/binutils/docs-2.16/as/index.html GAS syntax NASM syntax
========== ===========
jmp *100 jmp near [100]
call *100 call near [100]
jmp *%eax jmp near eax
jmp *%ecx call near ecx
jmp *(%eax) jmp near [eax]
call *(%ebx) call near [ebx]
ljmp *100 jmp far [100]
lcall *100 call far [100]
ljmp *(%eax) jmp far [eax]
lcall *(%ebx) call far [ebx]
ret retn
lret retf
lret $0x100 retf 0x100
jmp $segment, $offset
Ils sont move instructions, le déplacement des données d'un endroit à un autre - dans ces cas, de la mémoire dans un registre:
register_eax = *(unsigned long *)register_eax;
Votre autre exemple est quelque chose comme:
register_eax = *(unsigned long *)(register_ebp + 8);