Next: , Up: Inline Assembler   [Contents][Index]


10.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 example eax 
`Immediate operand' 
gcc / `as': Prefix with ’$’; for example $4 
Intel: No extra punctuation; for example 4 
`Address' 
gcc / `as': Prefix with ’$’; for example $loc 
Intel: No extra punctuation; for example loc 
`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 example A0h 
`Operand size' 
gcc / `as': Explicit in op code; for example movw to move a 16-bit word 
Intel: Implicit, deduced by assembler; for example mov 
`Instruction repetition' 
gcc / `as': Split into two lines; for example 
rep 
stosl 
Intel: Keep on one line; for example rep stosl 
`Order of operands' 
gcc / `as': Source first; for example movw $4, %eax 
Intel: Destination first; for example mov eax, 4 

Next: , Up: Inline Assembler   [Contents][Index]