Как известно, чтоб процессор смог запускать виртуальную машину, рассчитанную под другую архитектуру, нужно найти аналог команды в той архитектуре, на которой сейчас система.
Вопросы:
1. К примеру процессор имеет регистры общего назначения: A,B,C,D,E,F. (6 шт.). Процессор, который эмулируется, имеет 4 регистра. (R1,R2,R3,R4). Разрядность одинаковая. В таком случае R1->A, R2->B,R3->C,R4->D, то-есть чтоб эмулировать эти регистры достаточно будет поставить такое (или любое другое) соответствие?
2. Если эмулированый процессор имеет больше регистров, чем той, на котором запущен эмулятор, в таком случае ругистры будут хранится в ОЗУ или часть в регистрах а часть в ОЗУ или стеке? (К примеру R{1.6} -эмулированый проц, A{1..4}
R1->A1; .. R4->A4; R5 -ОЗУ, R6- ОЗУ )
3. К примеру, нужно запустить бинарник от другой архитектуры. Локальная копия системы с другой архитектуры есть.
Можно ли сделать чтоб некий конвертатор прошелся по бинарнику, сконвертировал его и библиотеки, которые он хочет так, чтобы он мог спокойно запуститься на этой архитектуре, причем почти без потерь в скорости работы (при соблюдении условия 1)?
4. Есть ли литература по этому вопросу??
5. Как эмулятор выбирает комманды, простым case-ом/if-ом?
6. Немного не по сабжу: где хранится стек проца? В ОЗУ или на самом проце?