IA32采用了一组统一的寄存器使用惯例,所有的过程都必须遵守,包括程序库中的过程。
根据惯例:
%eax, %edx, %ecx都被划分为调用者保存寄存器,
加入过程P调用过程Q,Q可以覆盖这些寄存器,而不会破坏任何P所需要的数据。
%ebx, %esi, %edi被划分为被调用者保存寄存器,
这就意味着被调用者在覆盖这些寄存器之前必须要先把这些寄存器的值保存在栈里,并在返回前恢复。
IA32采用了一组统一的寄存器使用惯例,所有的过程都必须遵守,包括程序库中的过程。
根据惯例:
%eax, %edx, %ecx都被划分为调用者保存寄存器,
加入过程P调用过程Q,Q可以覆盖这些寄存器,而不会破坏任何P所需要的数据。
%ebx, %esi, %edi被划分为被调用者保存寄存器,
这就意味着被调用者在覆盖这些寄存器之前必须要先把这些寄存器的值保存在栈里,并在返回前恢复。