ASM662: Ассемблер/дизассемблер для Oki 66201/66207/66301
ASM662 — это инструмент для работы с процессорами Oki 66201, 66207 и 66301, используемыми в некоторых ЭБУ Honda. Он поддерживает ассемблирование и дизассемблирование кода и находится в стадии активной разработки. Проект распространяется под лицензией BSD, что позволяет свободно использовать его в любых целях.
Особенности:
- Совместимость:
ASM662 также работает с процессорами NEC 66911, применяемыми в ЭБУ P13, P14, P0D. - Последние обновления:
- Последняя версия для Windows (1.2) была выпущена 8 октября 2003 года.
- Исходный код доступен в CVS-репозитории.
- Скачать готовые исполняемые файлы можно здесь.
- Режим эксперимента:
- В текущей версии дизассемблер позволяет указать адреса, которые не следует считать таблицами ROM.
- Пример использования:
dasm662 p30.bin p30.asm 5e20 5e59 7133 72fa
Известные проблемы:
- Флаг DD:
- В архитектуре Oki 66k один и тот же опкод может интерпретироваться по-разному в зависимости от состояния флага DD.
- ASM662 отслеживает этот флаг простым способом, который работает в большинстве случаев, но иногда приводит к ошибкам:
- Неправильная обработка косвенных переходов:
Эти переходы отсутствуют в ROM-ах P28, P30, P72, но встречаются в P13. - Субпрограммные вызовы, изменяющие DD:
Такие вызовы присутствуют во всех ROM, и это вызывает неточности в дизассемблировании.
Однако, несмотря на ошибки, ASM662 всегда генерирует код, который можно повторно собрать в идентичный набор байт.
- Неправильная обработка косвенных переходов:
- Индиректные переходы:
ASM662 пока не обрабатывает их корректно, так как они не встречаются в большинстве ROM. - Сложные субпрограммы:
Для правильной обработки субпрограмм, изменяющих DD, потребуется отложенное дизассемблирование до анализа их влияния. Этот подход ближе к декомпиляции, чем к дизассемблированию, и пока не реализован.
Планы и перспективы:
- Релокируемое дизассемблирование:
Основная цель — обеспечить полный перенос дизассемблированного кода с минимальными потерями. - Расширенный анализ кода:
В будущем возможно добавление умного анализа, чтобы улучшить обработку сложных инструкций, изменяющих DD, LRB и USP.
ASM662 — мощный инструмент для работы с ROM ЭБУ Honda. Несмотря на текущие ограничения, он предоставляет стабильную основу для анализа и модификации программного обеспечения ЭБУ.