Wstawki asemblerowe
Składnia AT&T
Główne różnice pomiędzy składnią Intela a AT&T
- Zmieniona kolejność operandów : najpierw źródło potem cel
OpCode źrodlo, cel
-
Nazwy rejestrów poprzedzamy % np. %eax, %ebx
- Stałe poprzedzamy znakiem $, stałe szesnastkowe przez $0x
$1, $322, $0xffff
-
Rozmiar operandów określamy dodając do OpCode przyrostek: b (8 bit), w (16 bit), l (32 bit)
movl zmienna, %ebx
-
Adresowanie pamięci wykorzystuje () zamiast []
movl (%ebx), %eax
-
Adresowaniu skalowanemu w stylu Intela
[base + index*scale + disp]
w AT&T odpowiada
disp(base, index, scale)
np.
movl %eax, -0xf4(%ebx, %ecx, 4)
Tutaj stałych nie należy poprzedzać znakiem $.
Tomasz Kapela, Kraków 2011-2020