www.delorie.com/gnu/docs/gcc/gnat_ug_252.html   search  
 
Buy the book!


Untitled Document

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24.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


  webmaster     delorie software   privacy  
  Copyright 2003   by The Free Software Foundation     Updated Jun 2003