Evaluates an address expression and displays the result as a memory address or a register name. Format EVALUATE/ADDRESS address-expression[, . . . ]
1 – Parameters
address-expression Specifies an address expression of any valid form (for example, a routine name, variable name, label, line number, and so on).
2 – Qualifiers
2.1 /BINARY
Displays the memory address in binary radix.
2.2 /DECIMAL
Displays the memory address in decimal radix.
2.3 /HEXADECIMAL
Displays the memory address in hexadecimal radix.
2.4 /OCTAL
Displays the memory address in octal radix.
3 – Description
The EVALUATE/ADDRESS command enables you to determine the memory address or register associated with an address expression. The debugger can interpret and display integer data in any one of four radixes: binary, decimal, hexadecimal, and octal. The default radix for both data entry and display is decimal for most languages. The exceptions are BLISS and MACRO, which have a default radix of hexadecimal. You can use a radix qualifier (/BINARY, /OCTAL, and so on) to display address values in another radix. These qualifiers do not affect how the debugger interprets the data you specify; that is, they override the current output radix, but not the input radix. If the value of a variable is currently stored in a register instead of memory, the EVALUATE/ADDRESS command identifies the register. The radix qualifiers have no effect in that case. The EVALUATE/ADDRESS command sets the current entity built-in symbols %CURLOC and period (.) to the location denoted by the address expression specified. Logical predecessors (%PREVLOC or the circumflex character (^)) and successors (%NEXTLOC) are based on the value of the current entity. On Alpha processors, the command EVALUATE/ADDRESS procedure-name displays the procedure descriptor address (not the code address) of a specified routine, entry point, or Ada package. Related commands: EVALUATE (SET,SHOW,CANCEL) RADIX SHOW SYMBOL/ADDRESS SYMBOLIZE Routine names in debugger expressions have different meanings on Integrity server and Alpha systems. On Alpha systems, the command EVALUATE/ADDRESS RTN-NAME evaluates to the address of the procedure descriptor.
4 – Examples
1.DBG> EVALUATE/ADDRESS RTN-NAME On Integrity server systems, instead of displaying the address of the official function descriptor, the debugger just displays the code address. For example, on Alpha systems, you can enter the following command and then set a breakpoint when a variable contains the address, FOO: 2.DBG> SET BREAK .PC WHEN (.SOME_VARIABLE EQLA FOO) The breakpoint occurs when the variable contains the address of the procedure descriptor. However, when you enter the same command on Integrity server systems, the breakpoint is never reached because, although the user variable might contain the address of the function descriptor for FOO, the "EQLA FOO" in the WHEN clause compares it to the code address for FOO. As a result, the user variable never contains the code address of FOO. However, the first quadword of an Integrity server function descriptor contains the code address, you can write it as: 3.DBG> SET BREAK .PC WHEN (..SOME_VARIABLE EQLA FOO) NOTE On Integrity server systems, you cannot copy the following line from your BLISS code: IF .SOME_VARIABLE EQLA FOO THEN do-something; 4. DBG> EVALUATE/ADDRESS MODNAME\%LINE 110 3942 DBG> This command displays the memory address denoted by the address expression MODNAME\%LINE 110. 5.DBG> EVALUATE/ADDRESS/HEX A,B,C 000004A4 000004AC 000004A0 DBG> This command displays the memory addresses denoted by the address expressions A, B, and C in hexadecimal radix. 6.DBG> EVALUATE/ADDRESS X MOD3\%R1 DBG> This command indicates that variable X is associated with register R1. X is a nonstatic (register) variable.