Я работаю над байтовым кодом CLI -> собственным кодом JIT, который отличается, но мы сталкиваемся с похожими препятствиями. Я поместил специальный метод ToString
, который будет красиво печатать текущее состояние байт-кода вместе со строго типизированным стеком оценки и т. Д. Он позволяет мне визуально проверять преобразования кода на каждом шаге с помощью инструмента сравнения текста. В конце концов я хочу создать визуализатор отладчика, который будет «ToString
» кодировать на каждом шаге и позволять мне идти вперед / назад прямо в отладчике с выделением изменений.
Если вы красиво распечатаете синтаксическое дерево, вы можете изменить его аналогичным образом.
Редактировать: я написал базовый класс Annotator
, который чередует байт-код IL с представлением на ассемблере сгенерированного собственного кода. У него есть метод ToHtmlString()
, который позволяет мне использовать преимущества HTML Visualizer, встроенного в отладчик Visual Studio. Пожалуйста, не критикуйте код ARM - я просто что-то взломал, чтобы сосредоточиться на Annotator, и теперь, когда он работает, я буду использовать его для работы над правильным codegen.
Щелкните правой кнопкой мыши → Просмотр изображения, если вы хотите увидеть его правильного размера. :)

(источник: 280z28.org )