Co robi zestawienie LEAL?
Jestem trochę zdezorientowany różnicą między nimi.
leal -4(%ebp), %eax
i
movl -4(%ebp), %eax
Czy ktoś może mi to wytłumaczyć?
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
4 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
http://pdos.csail.mit.edu/6.82 ... A.htm
(załaduj efektywny adres) po prostu oblicza
adres
operand, ale w rzeczywistości go nie wyłuskuje. W większości przypadków po prostu wykonuje obliczenia, takie jak połączone mnożenie i dodawanie, na przykład w celu indeksowania tablicy.
W tym przypadku wykonuje proste odejmowanie liczbowe: po prostu przypisuje do ... Jest to odpowiednik pojedynczej instrukcji , z tą różnicą, że wymaga, aby miejsce docelowe było takie samo jak jedno ze źródeł.
Natomiast uzyskuje dostęp do lokalizacji pamięci w i przechowuje tę wartość w .
Anonimowy użytkownik
Potwierdzenie od:
obliczany jest następujący zestaw kodu (Linux x86_64):
[ ... ]
4: 8b 7c 24 0c mov 0xc(%rsp),%edi
8: 48 8d 74 24 0c lea 0xc(%rsp),%rsi
d: e8 xx xx xx xx callq ... <func>
[ ... ]
Ponieważ / to 1
<sup>
</sup>
/ 2
<sup>
</sup>
argumenty, możesz zobaczyć, że pobiera
adres
zmienna i ładuje/przechowuje
wartość
jest taki sam.
To znaczy. w asemblerze użycie zamiast jest podobne do używania operatora address-of w C/C ++, zamiast samą wartość zmiennej.
ma o wiele więcej zastosowań niż to, ale wyraźnie zapytałeś o różnicę między nimi.
Aby zilustrować: z operandem pamięci zawsze uzyskuje dostęp do pamięci (ładuje lub zapisuje), podczas gdy operand pamięci do jest po prostu obsługiwany jako
arytmetyka wskaźnika
- to znaczy adres jest obliczany i rozstrzygany, ale w samej instrukcji nie ma dostępu do pamięci. Tych dwóch:
wynik jest taki sam jak:
podczas gdy następujące:
mnoży wartość w przez pięć.
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
na przykład zmienna.
MOV może również przesłać zawartość komórki pamięci do rejestru LEA
Nie mogę.
LEA & amp; MOV może obliczyć "efektywne przesunięcia", które można wykorzystać do tego.
matematyka jest znacznie wydajniejsza