Toto je krßtk² ·vod do AT&T syntaxe assembleru, kterß je pou╛φvßna v∞t╣inou GNU program∙ procaujφcφch s assemblerem. Tato syntax se pou╛φvala jako standard dlouho p°ed tφm, ne╛ si Intel vymyslel, ╛e to ud∞lß jinak. AT&T mß ale n∞kterΘ v²hody - je jednodu╣╣φ na zpracovßnφ, stejnß na v╣ech procesorech atd. Samoz°ejm∞ ╛e existuje p°evad∞Φ z Intel syntaxe, nebo NASM, co╛ je assembler podobn² TASMovi.
Zßkladnφ rozdφly jsou:
%
. P°ed Φφselnou
konstantou $
.b
,w
nebo l
movsx
a movzx
, kterΘ se
pφ╣φ jako movsSD
a movzSD
kde S
a D
udßvajφ velikost zdroje
nebo cφle. Nap°φklad movswl %ax, %ecx
SECTION:[BASE + INDEX*SCALE + DISP]
pφ╣e:
SECTION:DISP(BASE,INDEX,SCALE)
To je snad skoro v╣echno.P°φklady:
movw %bx, %ax (mov ax, bx)
xorl %eax, %eax (xor eax, eax)
movw $1, %ax (mov ax,1)
movb X, %ah (mov ah, byte ptr X)
movw X, %ax (mov ax, word ptr X)
movl X, %eax (mov eax, X)
cbtw (cbw)
cwtl (cwde)
cwtd (cwd)
cltd (cdq)
lcall $S,$O (call far S:O)
ljmp $S,$O (jump far S:O)
lret $V (ret far V)
movl 4(%ebp), %eax (mov eax, [ebp+4])
addl (%eax,%eax,4), %ecx (add ecx, [eax + eax*4])
movb $4, %fs:(%eax) (mov fs:eax, 4)
movl _array(,%eax,4), %eax (mov eax, [4*eax + array])
movw _array(%ebx,%eax,4), %cx (mov cx, [ebx + 4*eax + array])
Dotazy a p°ipomφnky ohledn∞ strßnky posφlejte na hubicka@paru.cas.cz