3

英特尔 64® 和 IA-32 架构软件开发人员手册的第 4.3 节中。第 1 卷:基本架构,它说:

Near 指针是一个段内的 32 位偏移量。Near 指针用于平面内存模型中的所有内存引用或分段模型中的引用,其中隐含了正在访问的段的身份。

这让我想知道:隐含的段寄存器是如何确定的?

我知道默认情况下使用(%eip)和置换(%eip)(例如-4(%eip))地址%cs(%esp)并且置换(%esp)地址使用%ss,但是,,,(%eax)等等,(%edx)隐式段寄存器是否也取决于内存地址操作数出现的指令?(%edi)(%ebp)

4

1 回答 1

3

除了 您提到的CS和寄存器访问之外,大多数其他访问都将使用段寄存器。我记得有几个例外:SSDS

  • 面向字符串的指令将使用ES“目标”(由寄存器隐式寻址EDI)段寄存器
  • EBP使用寄存器作为“基地址”寄存器的内存访问将使用SS段寄存器。但是,如果该EBP寄存器用作缩放索引寄存器,则使用的段将是DS(除非基地址寄存器是ESP
于 2010-05-20T21:34:44.237 回答