Cecha | Intel | AT&T |
---|---|---|
Liczby w instrukcjach (z wyjątkiem adresów) |
12345678 |
$12345678 |
Rejestry |
eax, ebx, cs, cr0, dr0, tr6, st(0)/st0 |
%eax, %ebx, %
cs, %cr0, %db0, %tr6,
%st(0) |
Adresy bezwzględne w skokach |
12345678 |
*12345678 brak gwiazdki oznacza adres względem bieżącego EIP |
Kolejność argumentów w instrukcjach |
mov eax, ebx imul ebx, eax, 69 |
movl %ebx, %eax imul $69, %eax, %ebx |
Przyrostki rozmiarowe |
mov al, byte ptr [abcd] mov bx, word ptr [efgh] mov ecx, dword ptr [ijkl] mov eax, 1 int 80h |
movb abcd, %al movw efgh, %bx movl ijkl, %ecx movl $1, %eax int $0x80 |
Skoki pod dany adres |
jmp/call far seg:off |
ljmp/lcall $seg, $off |
Instrukcje powrotu |
retf n ret n |
lret $n ret $n |
Rozszerzanie wartości do większych rozmiarów |
movsx ax, bl movzx eax, bl movsx eax, bx cbw cwde cwd cdq |
movsbw %bl, %ax movzbl %bl, %eax movswl %bx, %eax cbtw cwtl cwtd cltd |
Adresowanie złożone |
seg : [baza + index*skala + liczba] [ebp-4] [cos+eax*2] gs : gdzies mov eax, [ecx] sub eax, [ebx+ecx*4-20h] call [eax*4 + zmienna] |
%seg : liczba(%baza, %index, skala) -4(%ebp) cos(,%eax,2) %gs : gdzies movl (%ecx), %eax subl -0x20(%ebx,%ecx,0x4), %eax call *zmienna(,%eax,4) |
Adresowanie pojedynczych zmiennych |
mov al, byte [costam] |
movb costam(,1), %al movb costam, %al |
Pobieranie adresu zmiennych |
mov eax, offset costam (TASM, MASM) mov eax, costam (NASM, FASM) |
movl $costam, %eax |
Przyrostki instrukcji FPU |
fld dword [a] fld qword [b] fld tbyte/tword [c] fild qword [d] fild dword [e] fild word [f] |
flds a fldl b fldt c fildq d fildl e filds f |
Polecam też (po angielsku) porównanie składni AT&T ze składnią Intela oraz wstęp do wstawek asemblerowych (w GCC) na stronach DJGPP, podręcznik GCC (sekcje: 5.34 i 5.35), oraz (w języku polskim) stronę pana Danileckiego.