64位汇编寄存器

64位汇编中寄存器除了段寄存器外,其余的都是64位,即8字节,所以栈结构的入栈和出栈字节数都要求模8。相比32位汇编,64位汇编的通用寄存器在数量上多了8个,共有16个通用寄存器,其中八个是兼容32位汇编的,分别是将原来的名称e**改成了r**,如eax改成rax,其余8个分别命名为R8、R9、……R15,EIP和EFlags都改成RIP和RFlags,高32位都是0.,浮点寄存器还是64位,于32位汇编中一样,分别称为MMX0(或记为FPR0)、……、MMX7(或记为FPR7)。另外,还增加了16个128位的多媒体寄存器——XMM0、……XMM15,俗称SSE指令,XMM0等多媒体指令又是256位寄存器YMM0等的低128位,这些多媒体寄存器的出现可以是得float型数据计算非常快,一次算四个,相当于原来的两倍,广泛应用于游戏、视频和音乐中。用于调试64位程序的调试器有WndDbg和X64Dbg。rax等初始8个通用寄存器,取其中的低32位、第16位、第8位分别用相应的寄存器取便是,如rax分别是eax、ax、al,R8等后来按序号命名的寄存器取64位、低32位、低16位、低8位分别用R8、R8D、R8W、R8B等。

猜你喜欢

转载自my.oschina.net/u/1777508/blog/2967225