User`s guide
How the MACRO Compiler Functions on Different Platforms
2.13 Debugging
2.13.5 Debugging Code with Packed Decimal Data
Keep this information in mind when debugging compiled VAX MACRO code with
packed decimal data on an OpenVMS Alpha or OpenVMS I64 system:
• When using the EXAMINE command to examine a location that was declared
with a .PACKED directive, the debugger automatically displays the value as
a packed decimal data type.
• You can deposit packed decimal data. The syntax is the same as it is on VAX.
2.13.6 Debugging Code with Floating-Point Data
Keep this information in mind when debugging compiled VAX MACRO code with
floating-point data on an OpenVMS Alpha or OpenVMS I64 system:
• You can use the EXAMINE/FLOAT command to examine an Alpha or Itanium
integer register for a floating-point value.
Even though there is a set of registers for floating-point operations on
OpenVMS Alpha and OpenVMS I64 systems, those registers are not used by
compiled VAX MACRO code that contains floating-point operations. Only the
integer registers are used.
Floating-point operations in compiled VAX MACRO code are performed by
emulation routines that operate outside the compiler. Therefore, performing
VAX MACRO floating-point operations on, say, R7, has no effect on floating-
point Register 7.
• When using the EXAMINE command to examine a location that was declared
with a .FLOAT directive or other floating-point storage directives, the
debugger automatically displays the value as floating-point data.
• When using the EXAMINE command to examine the G_FLOAT data type,
the debugger does not use the contents of two registers to build the value for
VAX data.
Consider the following example:
EXAMINE/G_FLOAT R4
In this example, the lower longwords of R4 and R5 are not used to build the
value as is the case on VAX. Instead, the quadword contents of R4 are used.
The code the compiler generates for D_FLOAT and G_FLOAT operations
preserves the VAX format of the data in the low longwords of two
consecutive registers. Therefore, using EXAMINE/G_FLOAT on either of
these two registers will not give the true floating-point value, and issuing
DEPOSIT/G_FLOAT to one of these registers will not give the desired results.
You can manually combine the two halves of such a value, however. For
example, assume you executed the following instruction:
MOVG DATA, R6
You could then read the G_FLOAT value which now resides in R6 and R7
with a sequence like the following:
DBG> EX R6
.MAIN.\%LINE 100\%R6: 0FFFFFFFF D8E640D1
DBG> EX R7
.MAIN.\%LINE 100\%R7: 00000000 2F1B24DD
DBG> DEP R0 = 2F1B24DDD8E640D1
DBG> EX/G_FLOAT R0
.MAIN.\%LINE 100\%R0: 4568.89900000000
How the MACRO Compiler Functions on Different Platforms 2–35