Search code examples
x86-64intelinstrumentationintel-pin

How are the 16 General Purpose Registers represented in Intel PIN binary instrumentation tool


I know how the 1st 8 general purpose registers are represented in PIN, like REG_GAX, REG_GBX and so on. However I cant seem to find in the user manual how registers r8 to r15 are represented.


Solution

  • REG_GAX and REG_GBX are shorthand registers, for example REG_GAX is REG_RAX in 64-bit or REG_EAX in 32-bit.

    Excerpt from source/include/pin/gen/reg_ia32.PH, see also the file on github:

    REG_GAX = REG_RAX, ///< eax on a 32 bit machine, rax on 64

    As R8 up to R15 don't exist on 32-bit architecture, they have no shorthand except their own name (REG_R8, REG_R9, ...)