Rozdział 1.5.3.1



Rozkazy przesłania


  1. Zwykłe


  2. Stosowe


    • PUSH - dekrementacja wskaźnika stosu ESP o liczbę bajtów do odłożenia, odłożenie argumentu na wierzchołek stosu, nie ustawia znaczników, zajmuje 1 takt.


    • POP - przesłanie z wierzchołka stosu do argumentu rozkazu, inkrementacja wskaźnika stosu ESP o liczbę zdjętych bajtów, zajmuje 1 takt w przypadku trybu rejestrowego, a 3 takty gdy argument w pamięci lub rejestrze segmentowym.


    • PUSHA - odpowiednia dekrementacja SP i odłożenie na stos zawartości 8 rejestrów ogólnego przeznaczenia: AX, CX, DX, BX, SP (wartość przed dekrementacją), BP, SI, DI, nie ustawia znaczników, zajmuje 5 taktów.


    • PUSHF/PUSHFI - odłożenie na stos zawartości rejestru FLAGS/EFLAGS, nie ustawia znaczników, zajmuje kilka taktów.


    • POPA - zdjęcie stosu zawartości 8 rejestrów (odłożonych przez PUSHA), zapisanie w odpowiednich rejestrach i inkrementacja SP, nie ustawia znaczników, zajmuje 5 taktów.


    • POPAD - zdjęcie stosu zawartości 8 rejestrów (odłożonych przez PUSHAD), zapisanie w odpowiednich rejestrach i inkrementacja ESP, nie ustawia znaczników, zajmuje 5 taktów.


    • POPF/POPFD - zdjęcie stosu słowa/dwusłowa i zapisanie go w rejestrze FLAGS/EFLAGS, inkrementacja ESP, ustawia prawie wszystkie znaczniki, zajmuje kilka taktów.


    • ENTER - rezerwacja na stosie ramki dla zmiennych lokalnych (używane przez kompilatory np. C, Pascala), zajmuje 11 i więcej taktów zależnie od rozmiaru ramki.


    • LEAVE - zwolnienie ramki na stosie, zajmuje 3 takty.


  3. Specjalne


    • SAHF - zapamiętanie zawartości rejestru AH w rejestrze FLAGS, ustawia flagi SF, ZF, AF, CF, zajmuje 2 takty.


    • LDS,LES,LFS,LGS,LSS - ładowanie adresów dalekich 48 bitowych (segment:przemieszczenie) z pamięci do odpowiednich rejestrów DS,ES,FS,GS,SS, nie ustawiają znaczników, zajmują 4 takty.


    • LEA - określa przemieszczenie adresu argumentu źródłowego i zapisuje w argumencie docelowym, zajmuje 1 takt.


    • ARPL - zmiana pola RPL selektora.


    • LGDT/LIDT - ładowanie rejestru globalnej tablicy deskryptorów / tablicy deskryptorów przerwań, zajmuje 6 taktów .


    • LLDT/SLDT - ładowanie / zapisanie w pamięci rejestru lokalnej tablicy deskryptorów, zajmuje 9 taktów / 2 takty.


    • SGDT/SIDT - przesłanie zawartości rejestru globalnej tablicy deskryptorów / tablicy deskryptorów przerwań IDTR (6 bajtów) do pamięci pod adres podany w argumencie.


    • LMSW - załadowanie słowa stanu maszyny w rejestrze CR0, zajmuje 8 taktów.


    • LSL - ładuje rozmiar podanego segementu do rejestru, ustawia ZF, zajmuje 8 taktów.


    • LTR - ładuje argument źródłowy do rejestru zadania, zajmuje 10 taktów.


    • STR - zapisanie w pamięci rejestru zadania TR.


    • CPUID - identyfikacja jednostki centralnej (CPU), opis zapisany w EAX, zajmuje 14 taktów.


    • RDMSR/WRMSR - odczyt / zapis 64 bitowego rejestru MSR (ang. Model Specific Register) do / z EDX|EAX, rozkaz służy do monitoringu i zajmuje od 20 do 24 / 30 do 45 taktów.


    • RDTSC - odczyt z 64 bitowego licznika etykiety czasowej (ang. Time Stamp Counter) inkrementowanego po każdym takcie zegara do EDX|EAX.




Powrót do rozdziału 1
Powrót do strony głównej