Сегменты по умолчанию в командах

Тема в разделе "WASM.ASSEMBLER", создана пользователем NoName, 5 сен 2011.

  1. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    Компилятор генерирует:
    Код (Text):
    1. add       edi,dword ptr [ebp+0]
    2. cmp       eax,dword ptr [ebp+0]
    3. mov       eax,dword ptr [ebp+0]
    Какие сегменты будут использоваться в защищенном режиме по умолчанию для каждой из трех строк?
     
  2. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
  3. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    NoName
    У вас вопрос не корректный.
    При выполнение инструкций используется сегментный регистр по умолчанию DS.
    За исключением если в качестве индекса используется BP тогда используется сегментный регистр SS. Про EBP смотри вверх. Хотя я бы тут еще проверил.

    А вот по поводу того что за сегмент. При падания напряжения в сегментные регистры записываются значения, они написаны в мануэли. Так вот когда происходит переход в защищенный режим то это просто установка флага PE и сегментные регистры не перезагружаются, до тех пор пока не будет соответствующей команды.

    Дальше если вам интересно вы можете посмотреть в отладчике какие значение виндоус использует для сегментных регистров и какие сегменты он использует. Или любая другая интересующая вас ОС.
     
  4. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    Первый пост сразу дал верный ответ.
     
  5. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Pavia
    А Вы точно Pavia или просто аккаунт у него утащили?
     
  6. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Видать, бот утащил.

    Первый ответ действительно исчерпывающий. Если ebp - индексный регистр, то адресация выполняется относительно DS.
     
  7. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    И при этом не является базовым. Для инструкций mov eax,[ebp*4+ebx] и mov eax,[ebp*4+ebp] сегментный регистр по умолчанию будет разным.

    P.S. Ну это так. Для полноты. Уверен, Вы и так в курсе.
    P.P.S. Хотя, наверное, более показательной будет разница между записями mov eax,[ebp*4] и mov eax,[ebp*5].
     
  8. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.347
    l_inc
    что-то новое :)
     
  9. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    rmn, см. в этом же посте: ebp*5=ebp*4+ebp
     
  10. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    l_inc
    Да, я уже лет 10 как Pavia. Других в рунети не встречал.

    А если по поводу моего поста. Так я просто читал 2 и 3 том, а первый не читал.