Процессор i486(TM), работающий в защищенном режиме, подобно процессору 386(ТМ), основан на 32-разрядной архитектуре, но поддерживает программы для 16-разрядной архитектуры ранних процессоров Intel(R). Существуют три уровня поддержки:
Выполнение программ процессоров 8086 и 80286 при полной совместимости.
Сочетание 16-разрядных модулей с 32-разрядными модулями.
Сочетание 16-разрядных и 32-рязрядных адресов и данных в одном модуле.
Первый уровень обсуждался в Главе 21, Главе 22 и Главе 23. Эта глава покажет, как 16-разрядные и 32-разрядные модули могут взаимодействовать друг с другом, и как в одном модуле могут использоваться 16-разрядные и 32-разрядные операнды и адреса.
Функции процессора i486 работают эффективнее, когда возможно четкое разделение чисто 16-разрядных и чисто 32-разрядных модулей. Чисто 16-разрядные модули обладают следующими характеристиками:
Все сегменты содержат не более 64 Кбайт.
Элемент данных имеет размерность 8 или 16 бит.
Указатели на коды и данные имеют 16-разрядное смещение.
Управление передается только между сегментами, которые задаются при помощи 16-разрядного кода.
Чисто 32-разрядные модули обладают следующими характеристиками:
Сегменты могут содержать более 64 Кбайт (от 0 байт до 4 гигобайт).
Элемент данных имеет размерность 8 или 32 бита.
Указатели на коды и данные имеют 32-разрядное смещение.
Управление передается только между сегментами, которые задаются при помощи 32-разрядного кода.
Программы, написанные для 16-разрядных процессоров, содержат чистый 16-разрядный код. Новые программы, написанные для защищенного режима процессора i486, содержат чистый 32- разрядный код. При переносе прикладных програм с 16-разрядных процессоров на 32-разрядный процессор i486 может возникнуть ситуация, требующая сочетания 16-разрядных и 32-разрядных кодов. Причины для сочетания кодов могут быть следующие:
Модули будут преобразовываться один в один из 16-разрядной среды в 32-разрядную.
Старые 16-разрядные компиляторы и средства разработки програмного обеспечения будут использоваться в 32-разрядной операционной среде, пока новые 32-разрядные средства разработки не станут доступны.
Исходные тексты 16-разрядных модулей не доступны для модификации.
Специфические для данного модуля структуры данных имеют фиксированный размер 16-разрядного слова.
Естественный размер слова в исходном языке 16-бит.