comparison docs/manual.docbook.sgml @ 117:8e2523061ce9

Document the new autobranchlength pragma
author lost@l-w.ca
date Tue, 09 Aug 2011 18:16:41 -0600
parents c0aedb1584af
children d90ab253471e
comparison
equal deleted inserted replaced
116:7b0716264251 117:8e2523061ce9
1599 <para>Lines where this pragma is in effect will not appear in the assembly 1599 <para>Lines where this pragma is in effect will not appear in the assembly
1600 listing. Also, any symbols defined under this pragma will not show up in 1600 listing. Also, any symbols defined under this pragma will not show up in
1601 the symbol list. This is most useful in include files to avoid spamming the 1601 the symbol list. This is most useful in include files to avoid spamming the
1602 assembly listing with dozens, hundreds, or thousands of irrelevant 1602 assembly listing with dozens, hundreds, or thousands of irrelevant
1603 symbols.</para> 1603 symbols.</para>
1604
1605 </listitem>
1606 </varlistentry>
1607
1608 <varlistentry>
1609 <term>autobranchlength</term>
1610 <listitem>
1611
1612 <para>One of the perennial annoyances for 6809 programmers is that the
1613 mneumonics for the short and long branch instructions are different (bxx vs.
1614 lbxx), which is at odds with the rest of the instruction set. This pragma
1615 is a solution to those annoying byte overflow errors that short branch
1616 instructions tend to aquire.</para>
1617
1618 <para>When this pragma is in effect, which is not the default, whenever any
1619 relative branch instruction is used, its size will be automatically
1620 determined based on the actual distance to the destination. In other words,
1621 one can write code with long or short branches everywhere and the assembler
1622 will choose a size for the branch.</para>
1623
1624 <para>Also, while this pragma is in effect, the > and < symbols can be used
1625 to force the branch size, analogous to their use for other instructions with
1626 < forcing 8 bit offsets and > forcing 16 bit offets.</para>
1627
1628 <para>Because this pragma leads to source that is incompatible with other
1629 assemblers, it is strongly recommended that it be invoked using the PRAGMA
1630 directive within the source code rather than on the command line or via the
1631 *PRAGMA directive. This way, an error will be raised if someone tries to
1632 * assemble the code under a different assembler.</para>
1633
1634
1604 1635
1605 </listitem> 1636 </listitem>
1606 </varlistentry> 1637 </varlistentry>
1607 1638
1608 </variablelist> 1639 </variablelist>