Насколько я точен в своих тверждениях? Битовая карта начинается с 16-битного смещения относительно начала TSS, которое указано в последнем слове структуры TSS, ее размер 8192 байта, но может быть ограничен лимитом, указанным в дескрипторе TSS, типа (лимит TSS) - (адрес карты) = (размер карты). Если CPL задачи =< IOPL, то битовая карта нафиг не нужна. Изменения значений битов в ту или иную сторону не вызывает исключений. При CPL > IOPL работа с портом разрешена, если соответствующий бит в карте =false, иначе - #GP. Раскритикуйте, плиз. И, если можно, насыпте ссылок на оригинальные, правильные доки по теме. Заколустали опечатки в отечественных книгах.
Ну так ты сам просил "оригинальные, правильные доки" ) http://www.intel.com/products/processor/manuals/
не, я знаю, самые правильные доки лежат на intel.com, но подыскать и разобраться с моим заурядным инглишом - долго. Думал, может носом ткнут туда куда надо. Ну а если честно, по поводу битовой карты, что сказать можете? Мои выводы совпадают с истиной? Дело в том, что эти выводы - результат нескольких тестов и полученные впечатления могут отличатся от истиности.
Да вроде как. Цитирую (13.5.2 I/O Permission Bit Map, Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 1: Basic Architecture) Вообщем, почти все как ты сказал, + дополнение про вывод в порты слов и двойных слов (что все биты должны быть обнулены)