DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(as.info) i386-Syntax

Info Catalog (as.info) i386-Options (as.info) i386-Dependent (as.info) i386-Mnemonics
 
 AT&T Syntax versus Intel Syntax
 -------------------------------
 
    In order to maintain compatibility with the output of `gcc', `as'
 supports AT&T System V/386 assembler syntax.  This is quite different
 from Intel syntax.  We mention these differences because almost all
 80386 documents use Intel syntax.  Notable differences between the two
 syntaxes are:
 
    * AT&T immediate operands are preceded by `$'; Intel immediate
      operands are undelimited (Intel `push 4' is AT&T `pushl $4').
      AT&T register operands are preceded by `%'; Intel register operands
      are undelimited.  AT&T absolute (as opposed to PC relative)
      jump/call operands are prefixed by `*'; they are undelimited in
      Intel syntax.
 
    * AT&T and Intel syntax use the opposite order for source and
      destination operands.  Intel `add eax, 4' is `addl $4, %eax'.  The
      `source, dest' convention is maintained for compatibility with
      previous Unix assemblers.  Note that instructions with more than
      one source operand, such as the `enter' instruction, do _not_ have
      reversed order.   i386-Bugs.
 
    * In AT&T syntax the size of memory operands is determined from the
      last character of the instruction mnemonic.  Mnemonic suffixes of
      `b', `w', and `l' specify byte (8-bit), word (16-bit), and long
      (32-bit) memory references.  Intel syntax accomplishes this by
      prefixing memory operands (_not_ the instruction mnemonics) with
      `byte ptr', `word ptr', and `dword ptr'.  Thus, Intel `mov al,
      byte ptr FOO' is `movb FOO, %al' in AT&T syntax.
 
    * Immediate form long jumps and calls are `lcall/ljmp $SECTION,
      $OFFSET' in AT&T syntax; the Intel syntax is `call/jmp far
      SECTION:OFFSET'.  Also, the far return instruction is `lret
      $STACK-ADJUST' in AT&T syntax; Intel syntax is `ret far
      STACK-ADJUST'.
 
    * The AT&T assembler does not provide support for multiple section
      programs.  Unix style systems expect all programs to be single
      sections.
 
Info Catalog (as.info) i386-Options (as.info) i386-Dependent (as.info) i386-Mnemonics
automatically generated byinfo2html