4087490684

4087490684



27.05.2010

jest zabroniona. W ogóle najlepiej unikać jakichkolwiek operacji na rejestrach segmentowych.

3. Nie można do rejestru segmentowego bezpośrednio wpisać jakieś wartości. Czyli nie można

mov ds, 0

Ale można:

•    mov ebx, l/mov rdi, 1

Do rejestru EBX (32-bitowy) lub RDI (64-bitowy) wstaw 1. Dlaczego akurat 1 ? Zaraz się przekonamy.

•    mov ecx,tekst/mov rsi, tekst

Do rejestru ECX (32-bitowy) lub RSI (64-bitowy) wstaw offset (adres) etykiety tekst. Można obliczać adresy nie tylko danych, ale etykiet znajdujących się w kodzie programu.

•mov edx, dlugosc / mov edx, [dlugosc]/mov rdx, dlugosc / mov rdx, [dlugosc]

Do rejestru EDX (32-bitowy) lub RDX (64-bitowy) wstaw długość naszego tekstu. W pierwszym przypadku jest to stała, w drugim wartość pobieramy ze zmiennej.

•int 80h/syscall

Int = interrupt = przerwanie. Nie jest to jednak znane np. z kart dźwiękowych przerwanie typu IRQ. Wywołując przerwanie 80h (128 dziesiętnie) lub instrukcję syscall (w trybie 64-bitowym) uruchamiamy jedną z funkcji Linuksa. Którą? O tym zazwyczaj mówi rejestr akumulatora.

W tym przypadku EAX = 4 (lub RAX = 1 w trybie 64-bitowym) i jest to funkcja zapisu do pliku -sys_write. Funkcja ta przyjmuje 3 argumenty:

♦    W rejestrze EBX (lub RDI, w trybie 64-bitowym) podajemy numer (deskryptor) pliku, do którego chcemy pisać. U nas EBX (lub RDI) = 1 i jest to standardowe wyjście (zazwyczaj ekran).

♦    W rejestrze ECX (lub RSI, w trybie 64-bitowym) podajemy adres danych, które chcemy zapisać do pliku.

♦    W rejestrze EDX (lub RDX, w trybie 64-bitowym) podajemy, ile bajtów chcemy zapisać.

Funkcje systemowe 32-bitowego Linuksa przyjmują co najwyżej 6 argumentów, kolejno w rejestrach: EBX, ECX, EDX, ESI, EDI, EBP. W EAX oczy wiście jest numer funkcji, tak jak tutaj 4.

Funkcje systemowe 64-bitowego Linuksa przyjmują także co najwyżej 6 argumentów, kolejno w rejestrach: RDI, RSI, RDX, RIO, R8, R9. W RAX oczywiście jest numer funkcji, tak jak tutaj 1. Rejestry RCX i R11 są zamazywane.

•    raov eax, 1 / mov rax, 60

18


Pisanie i kompilowanie (asemblowanie) swoich programów



Wyszukiwarka

Podobne podstrony:
27.05.2010 kompilator. Miłego eksperymentowania. Na świecie jest 10 rodzajów ludzi: ci, którzy
Uchwala nr 265/2010 z dn. 27.05.2010 r. w sprawie ustalenia rocznego wymiaru zajęć dydaktycznych ora
Koło Naukowe Mechaniki Budowli ^
27.05.2010 10    i    i 5
27.05.2010 section .data    ; początek sekcji danych. tekst db

więcej podobnych podstron