Если библиотечный модуль обращается к произвольным внешним адресам - его универсальная работоспособность на всех архитектурах и во всех операционках PDP-11 также не гарантирована. Если библиотечный модуль не осуществляет косвенных обращений за пределы собственного сегмента данных - такие обращения будут осуществляться 32-разрядным кодом точно так же, как и 16-разрядным. Но если (например) код требует при вызове передачи абсолютного адреса аргумента в памяти ( типа - адреса строки, таблицы и т.п. ) - такой код даже в интерпретаторе сможет работать только в том случае, если перед его вызовом - аргумент будет скопирован в адресное пространство кода и, в случае изменения в ходе вызова - скопирован обратно при завершении вызова.
Отнюдь. Процессор может предоставлять эмулятору сервис ускорения эмуляции. Команда декодирования кода PDP-11 с переходом на обработчик из таблицы в аргументе, команда загрузки аргументов и команда выгрузки результата с базами источника и приёмника, команда исполнения кода PDP-11 с ведением флагов в ячейке эмуляции PSW и т.п. Именно такие архитектурные особенности делают 32-разрядный процессор более совместимым с 16-разрядным кодом PDP-11, который далеко не всегда может быть автоматически перекомпилирован для непосредственного исполнения в адресном пространстве 32-разрядного процесса, а значит - нуждается в эмуляции. Вводя специальные команды, позволяющие исполнить любую команду PDP-11 за 1-2 шага с использованием (например) специального режима виртуального мапинга памяти, для доступа к аргументам за пределами пространства вызываемого кода - мы получаем полностью контролируемую интеграцию 16-разрядного кода в 32-разрядный, лишь незначительно снижающую скорость исполнения.
- - - Добавлено - - -
Для примера - аппаратная виртуализация Intel позволяет программному эмулятору выполнять эмулируемый код Intel лишь на несколько процентов медленнее, чем при его прямом исполнении на процессоре. Такой подход к достижению совместимости 32-разрядного процессора с архитектурой PDP-11 выглядит вполне перспективным. Сейчас провёл эксперимент - когда я запускаю эмулятор процессора 1801ВМ2 на "железном" процессоре Intel - максимальное быстродействие получается 27.6 MIPS, а при запуске в программном эмуляторе процессора Intel, использующем технологию виртуализации - быстродействие снижается до 25.6 MIPS





Ответить с цитированием