通用寄存器的一些特殊用例是什么?

时间:2015-05-24 08:01:37

标签: assembly x86

有时,出于某些特定原因使用通用寄存器。例如,EAX用作累加器并存储返回值,ECX用作计数器,ESIEDI用于存储src和dst地址,分别。同样,ESPEBP

EBX注册是否有特定用例?还有什么我错过了通用寄​​存器的特殊用例吗?

1 个答案:

答案 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