1 @c Copyright (C) 2011-2014 Free Software Foundation, Inc. 2 @c This is part of the GAS manual. 3 @c For copying conditions, see the file as.texinfo. 4 @ifset GENERIC 5 @page 6 @node RL78-Dependent 7 @chapter RL78 Dependent Features 8 @end ifset 9 @ifclear GENERIC 10 @node Machine Dependencies 11 @chapter RL78 Dependent Features 12 @end ifclear 13 14 @cindex RL78 support 15 @menu 16 * RL78-Opts:: RL78 Assembler Command Line Options 17 * RL78-Modifiers:: Symbolic Operand Modifiers 18 * RL78-Directives:: Assembler Directives 19 * RL78-Syntax:: Syntax 20 @end menu 21 22 @node RL78-Opts 23 @section RL78 Options 24 @cindex options, RL78 25 @cindex RL78 options 26 27 @table @code 28 @item relax 29 Enable support for link-time relaxation. 30 31 @item mg10 32 Mark the generated binary as targeting the G10 variant of the RL78 33 architecture. 34 35 @item m32bit-doubles 36 Mark the generated binary as one that uses 32-bits to hold the 37 @code{double} floating point type. This is the default. 38 39 @item m64bit-doubles 40 Mark the generated binary as one that uses 64-bits to hold the 41 @code{double} floating point type. 42 43 @end table 44 45 @node RL78-Modifiers 46 @section Symbolic Operand Modifiers 47 48 @cindex RL78 modifiers 49 @cindex syntax, RL78 50 51 The RL78 has three modifiers that adjust the relocations used by the 52 linker: 53 54 @table @code 55 56 @item %lo16() 57 58 When loading a 20-bit (or wider) address into registers, this modifier 59 selects the 16 least significant bits. 60 61 @smallexample 62 movw ax,#%lo16(_sym) 63 @end smallexample 64 65 @item %hi16() 66 67 When loading a 20-bit (or wider) address into registers, this modifier 68 selects the 16 most significant bits. 69 70 @smallexample 71 movw ax,#%hi16(_sym) 72 @end smallexample 73 74 @item %hi8() 75 76 When loading a 20-bit (or wider) address into registers, this modifier 77 selects the 8 bits that would go into CS or ES (i.e. bits 23..16). 78 79 @smallexample 80 mov es, #%hi8(_sym) 81 @end smallexample 82 83 @end table 84 85 @node RL78-Directives 86 @section Assembler Directives 87 88 @cindex assembler directives, RL78 89 @cindex RL78 assembler directives 90 91 In addition to the common directives, the RL78 adds these: 92 93 @table @code 94 95 @item .double 96 Output a constant in ``double'' format, which is either a 32-bit 97 or a 64-bit floating point value, depending upon the setting of the 98 @option{-m32bit-doubles}|@option{-m64bit-doubles} command line 99 option. 100 101 @item .bss 102 Select the BSS section. 103 104 @item .3byte 105 Output a constant value in a three byte format. 106 107 @item .int 108 @itemx .word 109 Output a constant value in a four byte format. 110 111 @end table 112 113 @node RL78-Syntax 114 @section Syntax for the RL78 115 @menu 116 * RL78-Chars:: Special Characters 117 @end menu 118 119 @node RL78-Chars 120 @subsection Special Characters 121 122 @cindex line comment character, RL78 123 @cindex RL78 line comment character 124 The presence of a @samp{;} appearing anywhere on a line indicates the 125 start of a comment that extends to the end of that line. 126 127 If a @samp{#} appears as the first character of a line then the whole 128 line is treated as a comment, but in this case the line can also be a 129 logical line number directive (@pxref{Comments}) or a preprocessor 130 control command (@pxref{Preprocessing}). 131 132 @cindex line separator, RL78 133 @cindex statement separator, RL78 134 @cindex RL78 line separator 135 The @samp{|} character can be used to separate statements on the same 136 line. 137