На работе из-под винды как-то так
https://i.imgur.com/J7HK3E4.png
Вид для печати
На работе из-под винды как-то так
https://i.imgur.com/J7HK3E4.png
Для 6502 сделали умельцы работоспособный, оптимизирующий, backend: https://llvm-mos.org/
C, C++, Rust можно использовать, с некоторыми понятными ограничениями.
Видео:
https://www.youtube.com/watch?v=2lW3WHPtmKo
Разворот концевой рекурсии в цикл -- стандарт для компиляторов уже много десятилетий. Собственно, многие современные алгоритмы обработки списков полагаются на это.
Про это Clang ничего знать не должен, у него другие задачи. А так, у компиляторов на основе Clang всё это, разумеется, есть. Как же иначе?
Вот тут тема про этот backend: http://forum.6502.org/viewtopic.php?f=2&t=6450
Тема заглохла, но, возможно, кому-то будет интересен прямой (не через Си) способ разработки на Обероне под 6502 и Z80 (не проверен).
Цитата:
У Майкла Гроссниклауса (Michael Grossniklaus) есть компилятор Oberon, который использует LLVM в качестве бэкэнда и, по крайней мере, теоретически, должен быть способен компилироваться в любой системе, имеющей бэкэнд LLVM, но в настоящее время поддерживает разработку под Windowsx86/AMD64, MacOS и Linux, а поддержка Windows ARM находится в стадии разработки.
В этом проекте реализуется компилятор языка программирования Oberon в качестве интерфейса к инфраструктуре компилятора LLVM. Он написан на C++ и возник как проект, сопровождающий курс магистратуры «Конструирование компилятора», преподаваемый в Университете Констанца. Как следствие, этот компилятор изначально предназначался только для подмножества языка Оберон-0, как описано в книге Никлауса Вирта «Создание компилятора» (глава 6, стр. 30-32). С тех пор поддерживаемое подмножество Oberon постоянно расширялось с целью в конечном итоге охватить полную спецификацию языка, как описано в последней версии Oberon Language Report. Помимо этих «официальных» расширений, к поддерживаемому диалекту языка программирования Оберон были добавлены и другие функции. Эти функции были либо вдохновлены удобством, например, взаимодействием со стандартными библиотеками, либо ностальгией автора компилятора по изучению Turbo Pascal 6.0 как его первого языка программирования в старшей школе. Описание поддерживаемого в настоящее время диалекта Оберона с точки зрения синтаксиса и семантики (неофициальных функций) можно найти в разделе Wiki этого репозитория проекта.
Для macOS и Linux были протестированы версии x64 и Arm64. Полная поддержка Windows (arm64) в настоящее время находится в стадии разработки. Подробные инструкции по сборке компилятора Оберона и его зависимостей можно найти в разделе Wiki репозитория проекта.