[...]
> Я, откровенно говоря, не в курсе, что там было с VAX и
> Alpha, но идея трактовать ассемблер одной архитектуры, как высокоуровневый язык для
> генерации машинных кодов другой архитектуры - очень хорошая идея, которая в
> этой ветке треда и рассматривалась.Видите ли в чем фокус, ассемблер по определению является НИЗКОУРОВНЕВЫМ языком, т.е. очень сильно зависит от аппаратной реализации. В принципе, можно ассемблер CISC-архитектуры считать сравнительно высокоуровневым языком для RISC-архиректуры, но это никак не решает проблему эмуляции несоответствий архитектуры - разного количества регистров, разного их назначения, разной системы прерываний, разной модели памяти, разного порядка байт в памяти (мелкий/большой "индеец" ;) ), разного подхода к конструированию комманд (фиксированной/переменной длины).
Вы можете привести в качестве примера реализацию современных архитектур x86_64 - "снаружи CISC, внутри - RISC", но согласитесь, то, что "внутри RISC" - это довольно-таки специфический RISC, который не так-то просто заменить на какой-либо другой.
> Разумеется, тема эффективности генерируемого таким образом кода даже не поднималась. Но
> все-таки, по сравнению с эмулятором, как Вы упомянули, все равно будет
> быстрее - ибо, как я понимаю, эмулятор ведь параллельно транслирует и
> выполняет команды, а тут предлагается сразу оттранслировать команды и загружать изначально
> их, уже на другой платформе.
Это тоже довольно спорное утверждение. В современных эмуляторах все чаще используется динамическая трансляция, которая позволяет осуществить некоторые "интеллектуальные" оптимизации с учетом данных времени исполнения, что в большинстве случаев дает определенный выигрыш в скорости за счет фоновой трансляции, удаления переходов, вызова процедур и возврата из них, оптимизации по удалению избыточности, распространения копий и констант, «раскрутки» циклов и т.д.