64位机寄存器
定义:反汇编涉及到的32位——64位系统中,寄存器发生了些微改变(对于16位系统中的各寄存器,在其名前加上e成为eax/ecx代表其为32位寄存器,其中可存放32位数据;在其名前加上r成为rax/rcx代表其为64位寄存器,其中可存放64位数据)
示例1:64位系统寄存器汇总
PS1:如上图所示,其中‘易失’意味着当使用call指令等指令进行新代码段的调用时,其值有可能发生改变(该性质同16位时代的各寄存器,在call内使用前应当对其进行入栈以保证其内原本存放的数值不发生丢失)
PS2:如上图所示,其中‘非易失’意味着该寄存器在使用call指令进行跳转之后即使为其中存入新值,也不会导致ret回调之后原本存放的数值丢失,因此在call内使用该指令不需要对其进行入栈操作
PS4:上图中rcx/rdx/r8/r9分别作为固定的参数传递寄存器使用,可将之分别视为call调用函数的第1/2/3/4参数(他们作为传参寄存器是无法改变的),其中只能存放整数。
PS5:上图中的‘FP参数’意味浮点型参数,xmm0/xmm1/xmm2/xmm3的意义同rcx/rdx/r8/r9,区别在于其中存放的为浮点数。
示例2:寄存器分级