Всем привет. Вопрос связан с дескрипторными битами S и D/B. В дескрипторах кода и данных бит S установлен и бит D/B определяет размер операндов по умолчанию, 32 или 16-битный размер. А может-ли у пользовательских приложений в Windows быть не стандартный размер операнда? Где и как это используется? За ранее спасибо.
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-бит. Других нет.
s_d_f Если я правильно понял вопрос, вот пример исполнения в 16-битном сегменте с 16-битным стеком. Если увеличить лимит, то можно исполняться в ip-оверлее... до первого относительного перехода.
Да, в общем то что нужно. Надо будет попробовать переписать это для Win64, только там уже 16-байтные дескрипторы. И еще не знаю будет, ли работать функция NtSetLdtEntries, или она уже другая.