F.1 Basic Assembler Syntax
The assembler used by GNAT and gcc is based not on the Intel assembly
language, but rather on a language that descends from the AT&T Unix
assembler as (and which is often referred to as “AT&T syntax”). 
The following table summarizes the main features of as syntax
and points out the differences from the Intel conventions. 
See the gcc as and gas (an as macro
pre-processor) documentation for further information.
     
- Register names
- gcc / as: Prefix with “%”; for example %eax
 Intel: No extra punctuation; for exampleeax
 
- Immediate operand
- gcc / as: Prefix with “$”; for example $4
 Intel: No extra punctuation; for example4
 
- Address
- gcc / as: Prefix with “$”; for example $loc
 Intel: No extra punctuation; for exampleloc
 
- Memory contents
- gcc / as: No extra punctuation; for example loc
 Intel: Square brackets; for example[loc]
 
- Register contents
- gcc / as: Parentheses; for example (%eax)
 Intel: Square brackets; for example[eax]
 
- Hexadecimal numbers
- gcc / as: Leading “0x” (C language syntax); for example 0xA0
 Intel: Trailing “h”; for exampleA0h
 
- Operand size
- gcc / as: Explicit in op code; for example movwto move
a 16-bit word
 Intel: Implicit, deduced by assembler; for examplemov
 
- Instruction repetition
- gcc / as: Split into two lines; for example
 rep
 stosl
 Intel: Keep on one line; for examplerep stosl
 
- Order of operands
- gcc / as: Source first; for example movw $4, %eax
 Intel: Destination first; for examplemov eax, 4