Компилятор генерирует: Код (Text): add edi,dword ptr [ebp+0] cmp eax,dword ptr [ebp+0] mov eax,dword ptr [ebp+0] Какие сегменты будут использоваться в защищенном режиме по умолчанию для каждой из трех строк?
http://www.intel.com/content/www/us...tectures-software-developer-vol-1-manual.html The uses of general-purpose registers as base or index components are restricted in the following manner: o The ESP register cannot be used as an index register. o When the ESP or EBP register is used as the base, the SS segment is the default segment. In all other cases, the DS segment is the default segment.
NoName У вас вопрос не корректный. При выполнение инструкций используется сегментный регистр по умолчанию DS. За исключением если в качестве индекса используется BP тогда используется сегментный регистр SS. Про EBP смотри вверх. Хотя я бы тут еще проверил. А вот по поводу того что за сегмент. При падания напряжения в сегментные регистры записываются значения, они написаны в мануэли. Так вот когда происходит переход в защищенный режим то это просто установка флага PE и сегментные регистры не перезагружаются, до тех пор пока не будет соответствующей команды. Дальше если вам интересно вы можете посмотреть в отладчике какие значение виндоус использует для сегментных регистров и какие сегменты он использует. Или любая другая интересующая вас ОС.
Видать, бот утащил. Первый ответ действительно исчерпывающий. Если ebp - индексный регистр, то адресация выполняется относительно DS.
И при этом не является базовым. Для инструкций mov eax,[ebp*4+ebx] и mov eax,[ebp*4+ebp] сегментный регистр по умолчанию будет разным. P.S. Ну это так. Для полноты. Уверен, Вы и так в курсе. P.P.S. Хотя, наверное, более показательной будет разница между записями mov eax,[ebp*4] и mov eax,[ebp*5].
l_inc Да, я уже лет 10 как Pavia. Других в рунети не встречал. А если по поводу моего поста. Так я просто читал 2 и 3 том, а первый не читал.