Register usage by machine instructions

Registers that are not explicitly coded in symbolic assembler language representation of machine instructions, but are nevertheless used by assembled machine instructions, are divided into two categories:
  • Base registers that are implicit in the symbolic addresses specified. (See Addresses as machine instruction operands.) The registers can be identified by examining the object code or the USING instructions that assign base registers for the source module.
  • Registers that are used by machine instructions, but do not appear in assembled object code. For general registers, these are included in the General Purpose Register cross-reference, described in the HLASM Programmer's Guide.
    • For instruction operands which reference a general register pair, the odd-numbered register one greater than the even-numbered register specified as the operand. This includes for example double shifts, fullword multiply and divide, Move Long and Compare Logical Long instructions.
    • For Branch on Index High (BXH) and the Branch on Index Low or Equal (BXLE) instructions, if the register specified for the second operand is an even-numbered register, the next higher odd-numbered register is used to contain the value to be used for comparison.
    • For instructions that specify a range of registers, the registers that lie between the operands specifying the first and last registers of the range. This applies for example to the Load Multiple and Store Multiple instructions.
    • For extended-precision floating point instructions, the second register of the register pair.
    • For Compare and Form Codeword (CFC) instruction, registers 1, 2, and 3 are used.
    • For Translate and Test (TRT) instruction, registers 1 and 2 are used.
    • For Update Tree (UPT) instruction, registers 0-5 are used.
    • For Edit and Mark (EDMK) instruction, register 1 is used.
    • For certain control instructions, one or more of registers 0-4 and register 14 are used. See Control Instructions in the z/Architecture® Principles of Operation, SA22-7832.
    • For certain input and output instructions, either or both registers 1 and 2 are used. See Input/Output Instructions in the z/Architecture Principles of Operation, SA22-7832.