as: Word

1 
1 7.104 '.word EXPRESSIONS'
1 =========================
1 
1 This directive expects zero or more EXPRESSIONS, of any section,
1 separated by commas.
1 
1    The size of the number emitted, and its byte order, depend on what
1 target computer the assembly is for.
1 
1      _Warning: Special Treatment to support Compilers_
1 
1    Machines with a 32-bit address space, but that do less than 32-bit
1 addressing, require the following special treatment.  If the machine of
11 interest to you does 32-bit addressing (or doesn't require it; ⇒
 Machine Dependencies), you can ignore this issue.
1 
1    In order to assemble compiler output into something that works, 'as'
1 occasionally does strange things to '.word' directives.  Directives of
1 the form '.word sym1-sym2' are often emitted by compilers as part of
1 jump tables.  Therefore, when 'as' assembles a directive of the form
1 '.word sym1-sym2', and the difference between 'sym1' and 'sym2' does not
1 fit in 16 bits, 'as' creates a "secondary jump table", immediately
1 before the next label.  This secondary jump table is preceded by a
1 short-jump to the first byte after the secondary table.  This short-jump
1 prevents the flow of control from accidentally falling into the new
1 table.  Inside the table is a long-jump to 'sym2'.  The original '.word'
1 contains 'sym1' minus the address of the long-jump to 'sym2'.
1 
1    If there were several occurrences of '.word sym1-sym2' before the
1 secondary jump table, all of them are adjusted.  If there was a '.word
1 sym3-sym4', that also did not fit in sixteen bits, a long-jump to 'sym4'
1 is included in the secondary jump table, and the '.word' directives are
1 adjusted to contain 'sym3' minus the address of the long-jump to 'sym4';
1 and so on, for as many entries in the original jump table as necessary.
1