有时,出于某些特定原因使用通用寄存器。例如,EAX
用作累加器并存储返回值,ECX
用作计数器,ESI
和EDI
用于存储src和dst地址,分别。同样,ESP
和EBP
。
EBX
注册是否有特定用例?还有什么我错过了通用寄存器的特殊用例吗?
答案 0 :(得分:2)
EBX:基本寄存器
在16位模式下,基址寄存器EBX用作通用指针。除了专门的ESI,EDI和EBP寄存器外,它是唯一可以出现在方括号内存访问中的通用寄存器(例如,MOV [BX],AX)。但是,在32位世界中,任何寄存器都可以作为存储器偏移量,因此基址寄存器不再特殊。
基址寄存器从XLAT指令获取其名称。 XLAT使用AL作为索引并使用EBX作为基础在表中查找值。 XLAT相当于MOV AL,[BX + AL],如果您需要将一个8位值替换为表格中的另一个值(考虑颜色查找),这有时很有用。
因此,在所有通用寄存器中,EBX是唯一没有重要专用目的的寄存器。这是一个存储额外指针或计算步骤的好地方,但不多。
(引用)整个来源: The Art of Picking Intel Registers