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