Я как-то находил инструкции по сборке LLVM clang для z80. Я там мало что понял. Но там, похоже, получаются таргеты для z80 и ez80. Собирается все очень долго и муторно. Чтобы второй раз все не искать, собрал все в одном месте и завернул в образ на Dockerhub. Так что теперь собирать самому не надо (весь день). Весит 1.3 Гб примерно.
https://github.com/UA3MQJ/z80-llvm
https://hub.docker.com/repository/docker/ua3mqj/z80llvm
На компьютере должен быть установлен Docker. Вроде бы можно даже на Windows, но я не пробовал.
Кладем в текущую папку файл, запускаем и попадаем в среду контейнера, где доступен clang
Код:
docker run --rm -it -v$(pwd):/current_dir ua3mqj/z80llvm:1.0.3 bash
Компилируем
Код:
clang -cc1 -triple z80 -S -O3 -o test1.s test1.c
Из такой функции
Код:
char foo(char a, char b) {
return a + b;
}
получаем такой выхлоп
Код:
SEGMENT CODE
.file "test1.c"
XDEF _foo
_foo:
push ix
ld ix, 0
add ix, sp
ld a, (ix + 6)
add a, (ix + 4)
pop ix
ret
Далее не пока не экспериментировал.