Так можно избежать проблемы библиотек. Которые сильно разные на разных платформах. Делаем для каждой либы "виртуализирующий вызов" и делаем массив ловушк для адресов. Есть функция, которая берет некие данные из памяти, передает их либе, и потом кладет обратно результат.
Делаем большоооой big loop с метками. инклюдим все либы, какие только есть, и пишем такие обертки.
В начале лупа стоимт перехватчик, который отдает управление отдельному потоку управления. Тот, в свою очередь, ждет команд от "виртуальной исполняемой среды".
В C++ суперкоде родился кусок данных, которые я хочу обработать в библиотеке на целевом проце (чтобы либных клюков не возникло). Я даю этот кусок данных потоку управления и передаю упарвление ему.
Он кладет эти данные (преобрахования индианности и пр) в область данных функции в компилирующем симуляторе и выставляет значенние переменной - куда идти от начала лупа.
И отдает управление потока "процессору".
Тот выполняет переход на фукнцию, отрабатывает ее, снова возвращяется на луп. Луп замирает, поток управления берет обработанные данные, трансформирует и отдает С++ суперпотоку!
Бинго!!! Так можно многие глюки побороть...