HLASM Programmer's Guide
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Floating-Point Register type checking

HLASM Programmer's Guide
SC26-4941-06

The following examples use two instructions and are only concerned with the floating-point register fields:
  • The first operand of the Load Short (LE) instruction is a register field requiring a resolved absolute value of 0 through to 15. This value specifies a Floating-Point Register (FPR).
  • The first operand of the Load Long (LD) instruction is a register field requiring a resolved absolute value of 0 through to 15. This value specifies a Floating-Point Register (FPR).
Each unresolved floating-point register field is an expression composed of one or more terms. The assembler checks only the first term:
  • If the term is not a symbol, no more checking is performed.
  • If the assembler type of the symbol is FPR, no more checking is performed.
  • If the assembler type of the symbol is assigned but is not FPR, the assembler issues a warning message (severity 4) about a type checking conflict.
  • If the assembler type of the symbol is not assigned, and if the flag shows that at least one instance of an EQU with FPR has been encountered, the assembler issues an informational message (severity 0) about a possible type checking conflict.
  • If the assembler type of the symbol is not assigned,and if the flag shows that no instances of an EQU with FPR have been encountered, no more checking is performed.
Figure 1 shows an example of Floating-Point Register checking, with a warning message about an incompatible symbol type, and an informational message about a symbol not assigned an assembler type due to the existence of an EQU statement with FPR in the source code.
Figure 1. Floating-Point Register type checking with FPR activated
00000000 7845 C00C               0000000C     30          LE    4,12(5,12)
00000004 7845 C00C               0000000C     31          LE    FP4,12(R5,R12)
00000008 6825 C00C               0000000C     32          LD    A2,12(R5,R12)
** ASMA323W Symbol A2 has incompatible type with floating-point register field
0000000C 6865 C00C               0000000C     33          LD    FP6,12(R5,R12)
** ASMA324I Symbol FP6 may have incompatible type with floating-point register field
                                              34 *
                        00000004              35 FP4      EQU   4,,,,FPR
                        00000006              36 FP6      EQU   6
                                              37 *
                        00000005              38 R5       EQU   5,,,,GR
                        0000000C              39 R12      EQU   12,,,,GR
                        00000002              40 A2       EQU   2,,,,AR
Figure 2 shows an example of Floating-Point Register checking, with a warning message about an incompatible symbol type, and tolerance of symbols not assigned an assembler type due to the lack of an EQU statement with FPR in the source code.
Figure 2. Floating-Point Register type checking with FPR inactive
00000000 7845 C00C               0000000C     30          LE    4,12(5,12)
00000004 7845 C00C               0000000C     31          LE    FP4,12(R5,R12)
00000008 6825 C00C               0000000C     32          LD    A2,12(R5,R12)
** ASMA323W Symbol A2 has incompatible type with floating-point register field
0000000C 6865 C00C               0000000C     33          LD    FP6,12(R5,R12)
                                              34 *
                        00000004              35 FP4      EQU   4
                        00000006              36 FP6      EQU   6
                                              37 *
                        00000005              38 R5       EQU   5,,,,GR
                        0000000C              39 R12      EQU   12,,,,GR
                        00000002              40 A2       EQU   2,,,,AR

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014