[ASM] 64bit寄存器的作用

[ASM] 64bit寄存器的作用_第1张图片

图中指明了64bit的通用寄存器共有16个,访问不同大小时有不同名称。

另外就是后面的说明,当一个函数调用另一个函数的时候,可能要保存一些寄存器状态,这么多寄存器,到底由谁保存,编译器的指导方针就是:

一部分由调用者保存——caller saved

一部分由被调用者保存——callee saved


由调用者保存的,在call执行前,要将相关寄存器压栈,然后ret返回后,再弹栈。

由被调用者保存的,在call执行后进入被调用函数,如果函数需要用到某些寄存器,这些寄存器是callee saved,那么必需先将这些寄存器压栈,等处理完在ret返回前,将这些寄存器弹栈。


你可能感兴趣的:([ASM] 64bit寄存器的作用)