x86 的通用寄存器有 eax、ebx、ecx、edx、edi、esi。这些寄存器在大多数指令中是可以任意选用的,比如 movl 指令可以把一个立即数传送到 eax 中,也可传送到 ebx 中。但也有一些指令规定只能用其中某个寄存器做某种用途,例如除法指令 idivl 要求被除数在 eax 寄存器中,edx 寄存器必须是 0, 而除数可以在任意寄存器中,计算结果的商数保存在 eax 寄存器中(覆盖原来的被除数),余数保存在 edx 寄存器中。也就是说,通用寄存器对于某些特殊指令来说也不是通用的。
x86 的特殊寄存器有 ebp、esp、eip、eflags。eip 是程序计数器,eflags 保存着计算过程中产生的标志位,其中包括进位标志、溢出标志、零标志和负数标志, 在 intel 的手册中这几个标志位分别称为 CF、OF、ZF、SF。ebp 和 esp 用于维护函数调用的栈帧。
[汇编] x86的寄存器
最新推荐文章于 2024-06-01 22:26:59 发布