1 @c Copyright (C) 2005-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 M32C-Dependent 7 @chapter M32C Dependent Features 8 @end ifset 9 @ifclear GENERIC 10 @node Machine Dependencies 11 @chapter M32C Dependent Features 12 @end ifclear 13 14 @cindex M32C support 15 16 @code{@value{AS}} can assemble code for several different members of 17 the Renesas M32C family. Normally the default is to assemble code for 18 the M16C microprocessor. The @code{-m32c} option may be used to 19 change the default to the M32C microprocessor. 20 21 @menu 22 * M32C-Opts:: M32C Options 23 * M32C-Syntax:: M32C Syntax 24 @end menu 25 26 @node M32C-Opts 27 @section M32C Options 28 29 @cindex options, M32C 30 @cindex M32C options 31 32 The Renesas M32C version of @code{@value{AS}} has these 33 machine-dependent options: 34 35 @table @code 36 @item -m32c 37 @cindex @samp{-m32c} option, M32C 38 @cindex architecture options, M32C 39 @cindex M32C architecture option 40 Assemble M32C instructions. 41 42 @item -m16c 43 @cindex @samp{-m16c} option, M16C 44 @cindex architecture options, M16C 45 @cindex M16C architecture option 46 Assemble M16C instructions (default). 47 48 @item -relax 49 Enable support for link-time relaxations. 50 51 @item -h-tick-hex 52 Support H'00 style hex constants in addition to 0x00 style. 53 54 55 @end table 56 57 @node M32C-Syntax 58 @section M32C Syntax 59 @menu 60 * M32C-Modifiers:: Symbolic Operand Modifiers 61 * M32C-Chars:: Special Characters 62 @end menu 63 64 @node M32C-Modifiers 65 @subsection Symbolic Operand Modifiers 66 67 @cindex M32C modifiers 68 @cindex modifiers, M32C 69 70 The assembler supports several modifiers when using symbol addresses 71 in M32C instruction operands. The general syntax is the following: 72 73 @smallexample 74 %modifier(symbol) 75 @end smallexample 76 77 @table @code 78 @cindex symbol modifiers 79 80 @item %dsp8 81 @itemx %dsp16 82 83 These modifiers override the assembler's assumptions about how big a 84 symbol's address is. Normally, when it sees an operand like 85 @samp{sym[a0]} it assumes @samp{sym} may require the widest 86 displacement field (16 bits for @samp{-m16c}, 24 bits for 87 @samp{-m32c}). These modifiers tell it to assume the address will fit 88 in an 8 or 16 bit (respectively) unsigned displacement. Note that, of 89 course, if it doesn't actually fit you will get linker errors. Example: 90 91 @smallexample 92 mov.w %dsp8(sym)[a0],r1 93 mov.b #0,%dsp8(sym)[a0] 94 @end smallexample 95 96 @item %hi8 97 98 This modifier allows you to load bits 16 through 23 of a 24 bit 99 address into an 8 bit register. This is useful with, for example, the 100 M16C @samp{smovf} instruction, which expects a 20 bit address in 101 @samp{r1h} and @samp{a0}. Example: 102 103 @smallexample 104 mov.b #%hi8(sym),r1h 105 mov.w #%lo16(sym),a0 106 smovf.b 107 @end smallexample 108 109 @item %lo16 110 111 Likewise, this modifier allows you to load bits 0 through 15 of a 24 112 bit address into a 16 bit register. 113 114 @item %hi16 115 116 This modifier allows you to load bits 16 through 31 of a 32 bit 117 address into a 16 bit register. While the M32C family only has 24 118 bits of address space, it does support addresses in pairs of 16 bit 119 registers (like @samp{a1a0} for the @samp{lde} instruction). This 120 modifier is for loading the upper half in such cases. Example: 121 122 @smallexample 123 mov.w #%hi16(sym),a1 124 mov.w #%lo16(sym),a0 125 @dots{} 126 lde.w [a1a0],r1 127 @end smallexample 128 129 @end table 130 131 @node M32C-Chars 132 @subsection Special Characters 133 134 @cindex line comment character, M32C 135 @cindex M32C line comment character 136 The presence of a @samp{;} character on a line indicates the start of 137 a comment that extends to the end of that line. 138 139 If a @samp{#} appears as the first character of a line, the whole line 140 is treated as a comment, but in this case the line can also be a 141 logical line number directive (@pxref{Comments}) or a 142 preprocessor control command (@pxref{Preprocessing}). 143 144 @cindex line separator, M32C 145 @cindex statement separator, M32C 146 @cindex M32C line separator 147 The @samp{|} character can be used to separate statements on the same 148 line. 149