Evgeny_CDАрхитектор (04.08.2011 14:05, просмотров: 168) ответил Evgeny_CD на Сершилось! По дороге на работу меня настигло очередное озарение в части C++. Спасибо =AlexD= ->
Кстати, сюда в тему будет одна моя очень старая идея по «компилирующему симулятору». Вот есть у нас бинарник для микроконтроллера. Который можно в него загрузить и исполнить.
Пусть у нас будет программная модель контроллера – ядра, регистров, памяти.
Путь будет у нас БД – соответствие между асмовой командой и С кодом, который «выполняет» эту команду над виртуальной моделью контроллера.
Берем бинарник, декодируем, и рождаем мега С файл типаAdr_0X235423: acc = reg.a + reg.b ;Все переходы на адреса делаем goto метка.
Скармливаем этот мегафайл С компилеру на инструментальной платформе, и после завершения шуршания винча, мы получим exe, который будет делать то же, что и настоящий контроллер. Только прямо в памяти инструментальной платформы!
Понятно, что можно прикрутить GDB stub и «отлаживать» наш микроконтроллер :)
По мере отладки полностью виртуального С++ кода, как писал в стартовом посту, часть его можно заменять на «отчасти реальный» и продолжать комплексное тестирование системы.
Зато какую отладку можно устроить такому «контроллеру»! Можно тщательно просмотреть, как память используется, куда тем стек наехал и пр. Мяу! Это просто праздник какой-то!
Выполняться такой код, уверен, будет гораздо быстрее любого интерпретатора. Цикловой аккуратности не достичь – ну да и ладно, поставить дефолтные времена исполнения из доки – уже неплохая оценка будет.
Критика?