Table of component fields

A code of b'..1.....' generates a table with the instructions expanded into component fields (not operands), based on walking left-to-right through the Principles of Operations definition. It has the following structure:

Table 1. Operand-field table structure
Origin Length Contents
0 4 Number of fields (currently ≤6)
4 4 Field 1 description - see Operand-Description Structure for format
8 4 Field 1 value
12 4 Field 2 description
16 4 Field 2 value
20 4 Field 3 description
24 4 Field 3 value
28 4 Field 4 description
32 4 Field 4 value
36 4 Field 5 description
40 4 Field 5 value
44 4 Field 6 description
48 4 Field 6 value
52 16 Future expansion
68 4 Operand 1 flags - see Operand Flags for format
72 4 Operand 2 flags
76 4 Operand 3 flags
80 4 Operand 4 flags
84 4 Operand 5 flags
88 4 Operand 6 flags

Earlier implementations of this routine only expected instructions to have up to four operands, requiring the area only to be 84 bytes. When instructions with five and six operands were added to the instruction set, this limitation in the disassembler interface was overlooked, resulting in possible overwriting of one or two words following the caller's operand table area. This area should now be at least 92 bytes, but to reduce the risk of overwriting following storage when a caller only provides an 84-byte area, the operand 5 and 6 flag fields are not referenced or cleared for instructions with not more than four operands.

The field description contains two fields:

  • a flag byte which indicates separators which may precede or follow the field in a machine instruction presented to the assembler.
  • an integer to indicate the type of the field.
Table 2. Operand-description structure
Origin Length Contents
0 1 Flags:
b'1.......'- Comma before value
b'.1......'- Left parenthesis before value
b'..1.....'- Right parenthesis after value
1 1 Operand number
2 2 Type - see Operand-Field Type Definitions for values

The following table indicates the types and how they map to the Principles of Operations that tends not to distinguish, for example, between different register types.

Table 3. Operand-field type definitions
Type Definition Principles of Operations
1 General-purpose register R1-3, GR2, RS2, RT2
2 Base register B1-4
3 Index register X2
4 Displacement D1-4
5 Immediate or mask field I1-5
6 Length field L, L1-2
7 Control register R1-2
8 Access register R1-2
9 HFP register R1-2
10 BFP register R1-2
11 ESA/390 vector register V1-2
12 DFP register R1-2
13 z vector register V1-5
14 z vector index register V1-2

The following table maps the operand flags:

Table 4. Operand flags
Origin Length Contents
0 .1 each Operand required
Operand is modified
Operand is target of branch
Operand is first of span: R1 in LM R1,R3,D2(B2)
-reserved-
-reserved-
Operand is a register
Operand is mask or immediate
1 .1 each 0 specified implies R0
pair register required
Implicit length valid
Rn+1 referenced if Rn even
-reserved-
-reserved-
Signed number
No storage reference
2 .1 Reserved for future use
3 .1 Implied source/target length
number of bits if immediate or mask
(number of bytes)-1 if not immediate or mask