1@c Copyright 2007, 2008, 2011 Free Software Foundation, Inc. 2@c This is part of the GAS manual. 3@c For copying conditions, see the file as.texinfo. 4 5@ifset GENERIC 6@page 7@node CR16-Dependent 8@chapter CR16 Dependent Features 9@end ifset 10@ifclear GENERIC 11@node Machine Dependencies 12@chapter CR16 Dependent Features 13@end ifclear 14 15@cindex CR16 support 16@menu 17* CR16 Operand Qualifiers:: CR16 Machine Operand Qualifiers 18* CR16 Syntax:: Syntax for the CR16 19@end menu 20 21@node CR16 Operand Qualifiers 22@section CR16 Operand Qualifiers 23@cindex CR16 Operand Qualifiers 24 25The National Semiconductor CR16 target of @code{@value{AS}} has a few machine dependent operand qualifiers. 26 27Operand expression type qualifier is an optional field in the instruction operand, to determines the type of the expression field of an operand. The @code{@@} is required. CR16 architecture uses one of the following expression qualifiers: 28 29@table @code 30@item s 31- @code{Specifies expression operand type as small} 32@item m 33- @code{Specifies expression operand type as medium} 34@item l 35- @code{Specifies expression operand type as large} 36@item c 37- @code{Specifies the CR16 Assembler generates a relocation entry for the operand, where pc has implied bit, the expression is adjusted accordingly. The linker uses the relocation entry to update the operand address at link time.} 38@item got/GOT 39- @code{Specifies the CR16 Assembler generates a relocation entry for the operand, offset from Global Offset Table. The linker uses this relocation entry to update the operand address at link time} 40@item cgot/cGOT 41- @code{Specifies the CompactRISC Assembler generates a relocation entry for the operand, where pc has implied bit, the expression is adjusted accordingly. The linker uses the relocation entry to update the operand address at link time.} 42@end table 43 44CR16 target operand qualifiers and its size (in bits): 45 46@table @samp 47@item Immediate Operand 48- s ---- 4 bits 49@item 50- m ---- 16 bits, for movb and movw instructions. 51@item 52- m ---- 20 bits, movd instructions. 53@item 54- l ---- 32 bits 55 56@item Absolute Operand 57- s ---- Illegal specifier for this operand. 58@item 59- m ---- 20 bits, movd instructions. 60 61@item Displacement Operand 62- s ---- 8 bits 63@item 64- m ---- 16 bits 65@item 66- l ---- 24 bits 67@end table 68 69For example: 70@example 711 @code{movw $_myfun@@c,r1} 72 73 This loads the address of _myfun, shifted right by 1, into r1. 74 752 @code{movd $_myfun@@c,(r2,r1)} 76 77 This loads the address of _myfun, shifted right by 1, into register-pair r2-r1. 78 793 @code{_myfun_ptr:} 80 @code{.long _myfun@@c} 81 @code{loadd _myfun_ptr, (r1,r0)} 82 @code{jal (r1,r0)} 83 84 This .long directive, the address of _myfunc, shifted right by 1 at link time. 85 864 @code{loadd _data1@@GOT(r12), (r1,r0)} 87 88 This loads the address of _data1, into global offset table (ie GOT) and its offset value from GOT loads into register-pair r2-r1. 89 905 @code{loadd _myfunc@@cGOT(r12), (r1,r0)} 91 92 This loads the address of _myfun, shifted right by 1, into global offset table (ie GOT) and its offset value from GOT loads into register-pair r1-r0. 93@end example 94 95@node CR16 Syntax 96@section CR16 Syntax 97@menu 98* CR16-Chars:: Special Characters 99@end menu 100 101@node CR16-Chars 102@subsection Special Characters 103 104@cindex line comment character, CR16 105@cindex CR16 line comment character 106The presence of a @samp{#} on a line indicates the start of a comment 107that extends to the end of the current line. If the @samp{#} appears 108as the first character of a line, the whole line is treated as a 109comment, but in this case the line can also be a logical line number 110directive (@pxref{Comments}) or a preprocessor control command 111(@pxref{Preprocessing}). 112 113@cindex line separator, CR16 114@cindex statement separator, CR16 115@cindex CR16 line separator 116The @samp{;} character can be used to separate statements on the same 117line. 118