6.1. General Purpose Registers
The eight 32-bit general purpose registers (GPRs) are defined by Reg:
#check EAX -- Accumulator (encoding 0)
#check ECX -- Counter (encoding 1)
#check EDX -- Data (encoding 2)
#check EBX -- Base (encoding 3)
#check ESP -- Stack Pointer (encoding 4)
#check EBP -- Base Pointer (encoding 5)
#check ESI -- Source Index (encoding 6)
#check EDI -- Destination Index (encoding 7)
The NonSPReg type excludes ESP, which cannot be used as an index in SIB byte addressing.
Each register's encoding is accessed via Reg.toNat:
#eval EAX.toNat -- 0
#eval ECX.toNat -- 1
#eval ESP.toNat -- 4