1*e992f068Schristos@c Copyright (C) 2005-2022 Free Software Foundation, Inc. 216dce513Schristos@c This is part of the GAS manual. 316dce513Schristos@c For copying conditions, see the file as.texinfo. 416dce513Schristos@ifset GENERIC 516dce513Schristos@page 616dce513Schristos@node M32C-Dependent 716dce513Schristos@chapter M32C Dependent Features 816dce513Schristos@end ifset 916dce513Schristos@ifclear GENERIC 1016dce513Schristos@node Machine Dependencies 1116dce513Schristos@chapter M32C Dependent Features 1216dce513Schristos@end ifclear 1316dce513Schristos 1416dce513Schristos@cindex M32C support 1516dce513Schristos 1616dce513Schristos@code{@value{AS}} can assemble code for several different members of 1716dce513Schristosthe Renesas M32C family. Normally the default is to assemble code for 1816dce513Schristosthe M16C microprocessor. The @code{-m32c} option may be used to 1916dce513Schristoschange the default to the M32C microprocessor. 2016dce513Schristos 2116dce513Schristos@menu 2216dce513Schristos* M32C-Opts:: M32C Options 2316dce513Schristos* M32C-Syntax:: M32C Syntax 2416dce513Schristos@end menu 2516dce513Schristos 2616dce513Schristos@node M32C-Opts 2716dce513Schristos@section M32C Options 2816dce513Schristos 2916dce513Schristos@cindex options, M32C 3016dce513Schristos@cindex M32C options 3116dce513Schristos 3216dce513SchristosThe Renesas M32C version of @code{@value{AS}} has these 3316dce513Schristosmachine-dependent options: 3416dce513Schristos 3516dce513Schristos@table @code 3616dce513Schristos@item -m32c 3716dce513Schristos@cindex @samp{-m32c} option, M32C 3816dce513Schristos@cindex architecture options, M32C 3916dce513Schristos@cindex M32C architecture option 4016dce513SchristosAssemble M32C instructions. 4116dce513Schristos 4216dce513Schristos@item -m16c 4316dce513Schristos@cindex @samp{-m16c} option, M16C 4416dce513Schristos@cindex architecture options, M16C 4516dce513Schristos@cindex M16C architecture option 4616dce513SchristosAssemble M16C instructions (default). 4716dce513Schristos 4816dce513Schristos@item -relax 4916dce513SchristosEnable support for link-time relaxations. 5016dce513Schristos 5116dce513Schristos@item -h-tick-hex 5216dce513SchristosSupport H'00 style hex constants in addition to 0x00 style. 5316dce513Schristos 5416dce513Schristos 5516dce513Schristos@end table 5616dce513Schristos 5716dce513Schristos@node M32C-Syntax 5816dce513Schristos@section M32C Syntax 5916dce513Schristos@menu 6016dce513Schristos* M32C-Modifiers:: Symbolic Operand Modifiers 6116dce513Schristos* M32C-Chars:: Special Characters 6216dce513Schristos@end menu 6316dce513Schristos 6416dce513Schristos@node M32C-Modifiers 6516dce513Schristos@subsection Symbolic Operand Modifiers 6616dce513Schristos 6716dce513Schristos@cindex M32C modifiers 6816dce513Schristos@cindex modifiers, M32C 6916dce513Schristos 7016dce513SchristosThe assembler supports several modifiers when using symbol addresses 7116dce513Schristosin M32C instruction operands. The general syntax is the following: 7216dce513Schristos 7316dce513Schristos@smallexample 7416dce513Schristos%modifier(symbol) 7516dce513Schristos@end smallexample 7616dce513Schristos 7716dce513Schristos@table @code 7816dce513Schristos@cindex symbol modifiers 7916dce513Schristos 8016dce513Schristos@item %dsp8 8116dce513Schristos@itemx %dsp16 8216dce513Schristos 8316dce513SchristosThese modifiers override the assembler's assumptions about how big a 8416dce513Schristossymbol's address is. Normally, when it sees an operand like 8516dce513Schristos@samp{sym[a0]} it assumes @samp{sym} may require the widest 8616dce513Schristosdisplacement field (16 bits for @samp{-m16c}, 24 bits for 8716dce513Schristos@samp{-m32c}). These modifiers tell it to assume the address will fit 8816dce513Schristosin an 8 or 16 bit (respectively) unsigned displacement. Note that, of 8916dce513Schristoscourse, if it doesn't actually fit you will get linker errors. Example: 9016dce513Schristos 9116dce513Schristos@smallexample 9216dce513Schristosmov.w %dsp8(sym)[a0],r1 9316dce513Schristosmov.b #0,%dsp8(sym)[a0] 9416dce513Schristos@end smallexample 9516dce513Schristos 9616dce513Schristos@item %hi8 9716dce513Schristos 9816dce513SchristosThis modifier allows you to load bits 16 through 23 of a 24 bit 9916dce513Schristosaddress into an 8 bit register. This is useful with, for example, the 10016dce513SchristosM16C @samp{smovf} instruction, which expects a 20 bit address in 10116dce513Schristos@samp{r1h} and @samp{a0}. Example: 10216dce513Schristos 10316dce513Schristos@smallexample 10416dce513Schristosmov.b #%hi8(sym),r1h 10516dce513Schristosmov.w #%lo16(sym),a0 10616dce513Schristossmovf.b 10716dce513Schristos@end smallexample 10816dce513Schristos 10916dce513Schristos@item %lo16 11016dce513Schristos 11116dce513SchristosLikewise, this modifier allows you to load bits 0 through 15 of a 24 11216dce513Schristosbit address into a 16 bit register. 11316dce513Schristos 11416dce513Schristos@item %hi16 11516dce513Schristos 11616dce513SchristosThis modifier allows you to load bits 16 through 31 of a 32 bit 11716dce513Schristosaddress into a 16 bit register. While the M32C family only has 24 11816dce513Schristosbits of address space, it does support addresses in pairs of 16 bit 11916dce513Schristosregisters (like @samp{a1a0} for the @samp{lde} instruction). This 12016dce513Schristosmodifier is for loading the upper half in such cases. Example: 12116dce513Schristos 12216dce513Schristos@smallexample 12316dce513Schristosmov.w #%hi16(sym),a1 12416dce513Schristosmov.w #%lo16(sym),a0 12516dce513Schristos@dots{} 12616dce513Schristoslde.w [a1a0],r1 12716dce513Schristos@end smallexample 12816dce513Schristos 12916dce513Schristos@end table 13016dce513Schristos 13116dce513Schristos@node M32C-Chars 13216dce513Schristos@subsection Special Characters 13316dce513Schristos 13416dce513Schristos@cindex line comment character, M32C 13516dce513Schristos@cindex M32C line comment character 13616dce513SchristosThe presence of a @samp{;} character on a line indicates the start of 13716dce513Schristosa comment that extends to the end of that line. 13816dce513Schristos 13916dce513SchristosIf a @samp{#} appears as the first character of a line, the whole line 14016dce513Schristosis treated as a comment, but in this case the line can also be a 14116dce513Schristoslogical line number directive (@pxref{Comments}) or a 14216dce513Schristospreprocessor control command (@pxref{Preprocessing}). 14316dce513Schristos 14416dce513Schristos@cindex line separator, M32C 14516dce513Schristos@cindex statement separator, M32C 14616dce513Schristos@cindex M32C line separator 14716dce513SchristosThe @samp{|} character can be used to separate statements on the same 14816dce513Schristosline. 149