[[@]]register
The register is the name of a CPU or p-code register. You can specify a register name if you want to use the current value stored in the register. Registers are rarely needed in source-level debugging. However, they are frequently used for lower-level debugging.
When you specify an identifier, CodeView first checks the program's symbol table for the name. If the debugger does not find the name, it checks to see if the name is a register. If you want the identifier to name a register regardless of any name in the symbol table, use an at sign (@) before the register name.
For example, if your program has a symbol called AX, specify @AX to refer to the AX register. You can avoid this conflict by making sure that your program does not use register names as identifiers.
Table 11.1 lists the registers known to CodeView. The p-code registers are available when you are debugging p-code. The 32-bit registers are available on 80386 and 80486 machines when you turn the 386 option on.
Table 11.1 Registers
Register Type | Register Names |
8-bit high byte | AH, BH, CH, DH |
8-bit low byte | AL, BL, CL, DL |
16-bit general purpose | AX, BX, CX, DX |
16-bit segment | CS, DS, SS, ES |
16-bit pointer | SP, BP, IP |
16-bit index | SI, DI |
16-bit high word* | TH |
16-bit low word* | TL |
Quoting* | PQ |
32-bit general purpose† | EAX, EBX, ECX, EDX |
32-bit pointer† | ESP, EBP |
32-bit index† | ESI, EDI |
* Available only when debugging p-code
† Available only when 386 option is turned on