Registers can be accessed by using a percent (%) in front of the register name, and are considered lvalues (though extreme care should be used in modifying them):
debug0:12>The registers are:%eaxFFFFFFFF debug0:13>%eax = 00
| General registers: | |
|---|---|
| eax | function return value |
| ebx | general use |
| ecx | general use, counter |
| edx | general use |
| ebp | stack frame base pointer |
| esp | kernel stack pointer |
| uesp | user process stack pointer |
| esi | general use, source index |
| edi | general use, destination index |
| Segment registers: | |
| cs | code |
| ds | data |
| es | extra data |
| fs | extra data |
| gs | extra data |
| ss | stack |
| Memory management registers: | |
| gdtr | Global Descriptor Table Register |
| ldtr | Local Descriptor Table Register |
| idtr | Interrupt Descriptor Table Register |
| tr | Task register |
| Control registers: | |
| cr0 | system control flags |
| cr1 | unused |
| cr2 | page fault linear address |
| cr3 | page directory base |
| Other registers and pseudo-registers: | |
| eip | location processor is executing code |
| efl | flags |
| trap | system trap number |
| proc | processor running on (for MPX) |
The stack segment register, memory-management and control registers,
as well as the pseudo-registers trap and proc,
are not considered lvalues.