[Ebp * 2] faz referência ao segmento DS ou SS?

O IDM diz que a operação da memória usa o segmento SS se o EBP for usado como registro base. Como um resultado,[ebp + esi] e[esi + ebp] faz referência aos segmentos SS e DS, respectivamente. Veja o documento do NASM:3.3 Endereço Efetivo.

Na mesma seção acima, o NASM mencionou como gerar um código de máquina mais curto, substituindo[eax*2] com[eax+eax].

No entanto, o NASM também gera[ebp + ebp] para[ebp*2] (ou seja, sem registro de base).

Eu suspeito[ebp+ebp] referencia o segmento SS e[ebp*2] referencia o segmento DS.

Eu fiz a NASM esta pergunta. Eles pensam[ebp*2] e[ebp+ebp] são os mesmos, mas não faz sentido para mim. Obviamente,[ebp+ebp] (ebp como registro base) faz referência ao segmento SS. Se são iguais,[ebp*2 também deve fazer referência a SS. Isso significa que o SS é referenciado desde queebp é o registro base ou de índice, o que significa, por sua vez,[ebp + esi] e[esi + ebp] faça referência aos segmentos SS; portanto, eles devem ser os mesmos.

Alguém sabe qual segmento[ebp*2] usa?

questionAnswers(2)

yourAnswerToTheQuestion