Language Extensions

When the FLAG(HLASM) option is in effect, the Tachyon 390 Cross Assembler and Tachyon z/Assembler enforce most of the rules and restrictions of IBM’s High Level Assembler release 6. When the FLAG(NOHLASM) option is in effect, the Tachyon 390 Cross Assembler and Tachyon z/Assembler remove some of the restrictions and enable the following extensions to the assembly language:

Macro Functions

The SLA, SLL, SRA and SRL functions may be specified using the function call syntax.

The following extended macro functions are supported:

ABS
Syntax: &variable SETA ABS(arithmetic-expression)

The ABS function returns the absolute value of the operand. An overflow error will occur if the operand value is -2147483648.

C2G
Syntax: &variable SETC C2G(character-expression)

The C2G function returns the result of converting the operand to a DBCS character string. The result will have a leading SO character and a trailing SI character.

LOG10
Syntax: &variable SETA LOG10(arithmetic-expression)

The LOG10 function returns one less than the number of significant decimal digits required to represent the operand. For example, LOG10(120) will return 2. An error will occur if the operand value is not positive.

LOG2
Syntax: &variable SETA LOG2(arithmetic-expression)

The LOG2 function returns one less than the number of significant bits required to represent the operand. For example, LOG2(5) will return 2. An error will occur if the operand value is not positive.

POW
Syntax: &variable SETA POW(arithmetic-expression,arithmetic-expression)

The POW function returns the value of the first operand raised to the power of the second operand. For example, POW(-5,3) will return -125. An error will occur if the second operand value is negative. Zero will be returned if the first operand is zero.

REM
Syntax: &variable SETA REM(arithmetic-expression,arithmetic-expression)

The REM function returns the remainder of the first operand divided by the second operand using a-b*(a/b) where a and b are the first and second operands respectively. For example, REM(5,3) will return 2. Overflow will not occur because 0 will always be returned if the second operand is 1 or -1.

Self Defining Terms

The Tachyon assemblers support CA, CB, CE, CU and CW self defining terms. These explicitly ASCII, UTF-8, EBCDIC, UTF-16 and UTF-32 character terms are not supported by the IBM High Level Assembler.

Machine Instructions

The Tachyon z/Assembler allows the second operand of fullword-immediate instructions (such as AFI) to be a simply-relocatable value.

*PROCESS

Any of the options accepted by the Tachyon Assemblers may be specified on the *PROCESS or *PROCESS OVERRIDE statements.

ACONTROL

The Tachyon assemblers support ALIGN and NOALIGN as operands of the ACONTROL statement to allow different sections of an assembly to have differing alignment settings. The Tachyon assemblers also support all of the FLAG options that are unique to the Tachyon Assemblers.

ADATA

The fifth ADATA operand may be a character string up to 36 bytes less than the maximum ADATA record length or 65535 bytes if no ADATA records are to be written.

CNOP

The Tachyon assemblers support CNOP 0,2 as a way to create a halfword aligned label. With the OBJECT(GOFF) option in effect, the second CNOP operand can be any power of 2 from 2 to 4096.

DC, DS, DXD and Literals

B, C and X-types may be up to 65535 bytes in length, G and CU types may be up to 65534 bytes in length, and CW types may be up to 65532 bytes in length, DS and DXD length limits are further increased up to the limit for the EQU length. The maximum bit length modifier for DC B, C, G and X-types has not been increased and remains at 2048 (256 bytes).

CB and CW types (UTF-8 and UTF-32 character valuess) are supported.

F types can have explict length modifier values up to 16 bytes or 128 bits. FQ types are supported and are quadword aligned and 16 bytes long.

Z and P types with a sign of U (e.g. ZL3'U10') are supported and will have a sign nybble of X'F'.

EQU

The second EQU operand (length attribute) can be up to 99999999 unless ADATA records are generated with ADATALEVEL(4). ADATALEVEL(4) records do not allow length attributes greater than 65535 to be recorded.

ORG

The second ORG operand (alignment) can be 1, 2 or 4.

SETC

The SETC result can be up to 50000 bytes.


Frames No Frames Previous Next Contents
Introduction Setup Running Options Macros Translation Compatibility Messages
© Copyright 2004-2008, Tachyon Software® LLC.
Last modified on October 15, 2008