Не большой вопрос по сегментным дескрипторам

Тема в разделе "WASM.ASSEMBLER", создана пользователем s_d_f, 11 окт 2010.

  1. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    Всем привет.

    Вопрос связан с дескрипторными битами S и D/B. В дескрипторах кода и данных бит S установлен и бит D/B определяет размер операндов по умолчанию, 32 или 16-битный размер.

    А может-ли у пользовательских приложений в Windows быть не стандартный размер операнда?
    Где и как это используется?

    За ранее спасибо.
     
  2. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    s_d_f
    Смотря что вы понимаете под нестандартным. 8(al,ah,...),16(ax,bp,...),32(eax,ebp,...),64(rax,rbx,...,mm0,mm1,...),80(st0,st1),128(xmm0,xmm1,...) других нету (хотя уже появляются и 256 битные операнды)

    сегменты возможно с 3-я типами адресации 16-бит, 32-бит и 64-бит. Других нет.
     
  3. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    s_d_f
    Если я правильно понял вопрос, вот пример исполнения в 16-битном сегменте с 16-битным стеком. Если увеличить лимит, то можно исполняться в ip-оверлее... до первого относительного перехода.
     
  4. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    Да, в общем то что нужно.
    Надо будет попробовать переписать это для Win64, только там уже 16-байтные дескрипторы.
    И еще не знаю будет, ли работать функция NtSetLdtEntries, или она уже другая.