|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Ноя 21, 2003 23:47:11 Как на счет вопросов? Я не понял фразу: GDT меняетса для каждой програмы, но при этом её скелет остаётса одинаковым! чесал репу минут пять, пока не одурел. При смене контекста, ессно, fs переопределяется. Это делает скедьюлер. А ты что имел ввиду? |
|
|
Дата: Ноя 21, 2003 23:57:55 В моем, в прямом смысле слова ламерском, понимании вопроса, есть селекторы сегментов (cs, fs и т.п.), которые дают индексы дескрипторов сегментов в GDT (64-битные структуры), которые определены для Windows так:
typedef struct _KGDTENTRY
{
/*000*/ WORD LimitLow;
/*002*/ WORD BaseLow;
/*004*/ DWORD HighWord;
/*008*/ }
KGDTENTRY,
* PKGDTENTRY,
**PPKGDTENTRY;
Так вот, насколько я тебя усвоил, ты говоришь, что кто-то меняет GDT. Когда, кто, зачем? |
|
|
Дата: Ноя 22, 2003 00:55:24 · Поправил: merlin При смене контекста, ессно, fs переопределяется. Это делает скедьюлер. А ты что имел ввиду? Ну в общем это и имел в виду. Только выразилься слишком запутано. ...кто-то меняет GDT. Когда, кто, зачем? Сама винда его и меняет. По большому счёту идёт перестройка GDT на каждом изменении контекста (или деланья нового, не помню точно). Обычно изменения видно только на селекторе который ставитса в fs. Вообще с этим селектором очень длиная история, потому что чясто бывает что иммено такого селектора и в помине нету, а есть перенаправка на другой селектор... Кстати используя информацию что в 9х есть LDT, а в NT её нету, достачьно чтобы сделать вот это: mov ax, cs shr ax, 3 ; проверка бита TI setc byte [9x] ; если есть перенос тогда установит переменую |
|
|
Дата: Ноя 22, 2003 20:59:39 merlin Надо проверить... Потом. Спасибо! |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.033 |