as: ESA/390 Syntax

1 
1 9.14.3 Syntax
1 -------------
1 
1 The opcode/operand syntax follows the ESA/390 Principles of Operation
1 manual; assembler directives and general syntax are loosely based on the
1 prevailing AT&T/SVR4/ELF/Solaris style notation.  HLASM-style directives
1 are _not_ supported for the most part, with the exception of those
1 described herein.
1 
1    A leading dot in front of directives is optional, and the case of
1 directives is ignored; thus for example, .using and USING have the same
1 effect.
1 
1    A colon may immediately follow a label definition.  This is simply
1 for compatibility with how most assembly language programmers write
1 code.
1 
1    '#' is the line comment character.
1 
1    ';' can be used instead of a newline to separate statements.
1 
1    Since '$' has no special meaning, you may use it in symbol names.
1 
1    Registers can be given the symbolic names r0..r15, fp0, fp2, fp4,
1 fp6.  By using these symbolic names, 'as' can detect simple syntax
1 errors.  The name rarg or r.arg is a synonym for r11, rtca or r.tca for
1 r12, sp, r.sp, dsa r.dsa for r13, lr or r.lr for r14, rbase or r.base
1 for r3 and rpgt or r.pgt for r4.
1 
1    '*' is the current location counter.  Unlike '.' it is always
1 relative to the last USING directive.  Note that this means that
1 expressions cannot use multiplication, as any occurrence of '*' will be
1 interpreted as a location counter.
1 
1    All labels are relative to the last USING. Thus, branches to a label
1 always imply the use of base+displacement.
1 
1    Many of the usual forms of address constants / address literals are
1 supported.  Thus,
1      	.using	*,r3
1      	L	r15,=A(some_routine)
1      	LM	r6,r7,=V(some_longlong_extern)
1      	A	r1,=F'12'
1      	AH	r0,=H'42'
1      	ME	r6,=E'3.1416'
1      	MD	r6,=D'3.14159265358979'
1      	O	r6,=XL4'cacad0d0'
1      	.ltorg
1    should all behave as expected: that is, an entry in the literal pool
1 will be created (or reused if it already exists), and the instruction
1 operands will be the displacement into the literal pool using the
1 current base register (as last declared with the '.using' directive).
1