Syntax selalu
berbeda pada setiap bahasa pemrograman, tetapi kadang kala juga
terdapat perbedaan pada sebuah bahasa pemrograman yang sama. Contohnya adalah
asembly yang memiliki 2 macam syntax, yaitu Intel dan AT&T.
Syntax Intel sering dipakai pada lingkungan sistem operasi Windows,
jadi sudah banyak yang mengenalnya. Bagaimana dengan syntax AT&T?
Syntax AT&T sering digunakan pada system operasi Unix dan
sebangsanya, seperti Linux dan BSD. Penulisan syntax AT&T
membutuhkan prefix, hal ini dimaksudkan untuk mempermudah compiler
menerjemahkan kode menjadi biner. Ini membuatnya kurang disukai oleh
programmer, karena dinilai kurang praktis dalam penulisannya. Contoh
compiler yang menyediakan syntax AT&T adalah Gas(GNU Assembler).
Prefix
Prefix adalah symbol
atau tanda yang dipakai untuk menentukan jenis instruksi dan operand.
Prefix pada
Instruksi
Penggunaan prefix
wajib ditulis pada setiap instruksi yang memiliki operand, misalnya
MOV, INC dan ADD. Prefix diletakkan didepan instruksi dan huruf
prefixnya ditentukan oleh jenis operasi yang digunakan oleh
instruksi. Prefix pada instruksi AT&T antara lain adalah, B untuk
operasi BYTE, W untuk WORD dan L untuk LONG(DOUBLEWORD).
- Prefix pada register
Register
yang akan kita akses harus diawali dengan karakter “%”, misalnya,
%EAX, %EBP dan %AL.
- Prefix pada angka
Penulisan
angka harus diawali dengan prefix karakter dollar “$”, misalnya,
$1, $12, $0x100, $0xff dan $0x1b.
Symbol
Beberapa symbol pada
syntax AT&T berbeda dengan syntax Intel, untuk melihat
perbedaannya lihat Contoh di bagian bawah.
Operand
Penulisan operand
juga berbeda dengan syntax Intel, operand pada syntax AT&T
berbalik dari syntax Intel.
Contoh
Untuk memahami semua
penjelasan di atas, lihat tabel contoh di bawah ini dengan seksama.
Intel | AT&T |
clc | clc |
Inc al | Incb %al |
mov al, bh | movb %bh,%al |
mov ax,dx | movw %dx,%ax |
mov eax,ebx | movl %ebx,%eax |
mov eax,1000 | movl $1000,%eax |
mov eax,[edi] | movl [%edi],%eax |
mov eax,[edi + 4] | movl 4[%edi],%eax |
mov eax,[edi – 5] | movl -5[%edi],%eax |
0 comments