Цитата Сообщение от Patron Посмотреть сообщение
ведь реальный старый код без системных вызовов не бывает
Это почему это не бывает? "Старый код" - не только лишь законченные программы, но и чья-нибудь библиотечка старых этюдов обработки информации в памяти, где ни единого системного вызова.

Цитата Сообщение от Patron Посмотреть сообщение
поэтому для запуска старого кода предусмотрены специальные 16-разрядные процессы, выполняемые не на основном 32-разрядном ядре, а на специальном сопроцессоре,
О какой тогда "полной совместимости" идёт речь? Я подумал, что планировалась бинарная.
А тут даже полная совместимость на уровне ассемблерных исходников под вопросом.

Цитата Сообщение от Patron Посмотреть сообщение
Легаси-команды - это полноценные 32-разрядные команды с нулевым старшим словом кода команды. Они нужны не для запуска старого двоичного 16-разрядного кода в 32-разрядных процессах, а для упрощения переделки кодогенераторов старых компиляторов.
Не пойму, в чём уж такая проблема и зачем для её решения порождать/усугублять проблему несовместимости

Цитата Сообщение от Patron Посмотреть сообщение
Чтобы старый ассемблерный текст, скомпилированный для 32-разрядной архитектуры, имел отличия в работе от работы на PDP-11 - нужно очень постараться. Что-то вроде: ADD #4,PC или MOV 2(SP),(SP) | RETURN - сработает по-разному ( и поэтому выдаст предупреждение при компиляции ), но команды не использующие явно PC и SP для косвенно-индексной адресации - сработают одинаково.
Так что насчёт модифицируемого кода? Вот хотя бы перед вызовом в тело процедуры вписать константу. А потом чтоб тот же адрес в том же регистре послужил базой для доступа к таблице какой-нибудь (или же для вычисления базы). А как автоинкременты должны работать? Неизвестно же, это шаг на следующую команду или на данные.