Musisz mi wybaczyć, jestem nowy w montażu x86 i montażu w ogóle.Znaczenie (% eax) w składni AT & T?
Więc moje pytanie jest, mam coś takiego:
addl %edx,(%eax)
% eax jest rejestr, który posiada wskaźnik do jakiejś liczby całkowitej. Nazwijmy to xp
Czy to oznacza, że mówi: *xp = *xp + %edx
? (%edx
jest liczbą całkowitą)
Jestem po prostu zdezorientowany, gdzie addl zapisze wynik. Jeśli %eax
jest wskaźnikiem do int, to wtedy wartość rzeczywistą tego int powinna być równa (%eax)
. Czy zatem addl
zapisze wynik %edx+(%eax)
w *xp
? Bardzo bym chciał, żeby ktoś mi to wyjaśnił!
Naprawdę doceniam każdą pomoc!
+1 prosta prosta odpowiedź. –
'(% eax)' jest "rejestr pośredni", jeśli chcesz [nazwać różne tryby adresowania] (https://stackoverflow.com/questions/46257018/do-terms-like-direct-indirect-addressing-mode- actual-exists-in-the-intel-x86-man) w ogóle. Adresowanie "pamięci pośredniej" ma miejsce, gdy procesor ładuje adres z pamięci, a następnie odbiera *, że * (x86 nie obsługuje adresowania pamięci pośredniego). https://en.wikipedia.org/wiki/Addressing_mode#Memory_indirect –