Оказывается, для 16-битной архитектуры Intel 8086 имеется компилятор GNU Си/Си++, и активно поддерживается. Раньше я слышал про
bcc и
OpenWatcom, но они имеют ограниченный функционал. С таким известием затея по восстановлению Юникса v7 (
Venix) для писишки не выглядит безнадёжной.
Исходники:
github.com/tkchia/gcc-ia16Зеркало:
gitlab.com/tkchia/build-ia16/-/releasesНа интеловской Ubuntu компилятор ставится следующим образом:
sudo apt install software-properties-common
sudo add-apt-repository ppa:tkchia/build-ia16
sudo apt-get update
sudo apt-get install gcc-ia16-elf
На Ubuntu ARM64 аналогично, но из другого места:
sudo add-apt-repository ppa:catacombae/gcc-ia16-arm64
Глянем на сгенерённый код:
$ ia16-elf-gcc -S -O hello.c
$ cat hello.s
.arch i8086,jumps
.code16
.att_syntax prefix
#NO_APP
.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "Hello, World!"
.text
.global main
.type main, @function
main:
movw $.LC0, %ax
pushw %ax
call puts
addw $2, %sp
movw $0, %ax
ret
.size main, .-main
.ident "GCC: (GNU) 6.3.0"
По умолчанию линкуется бинарник для MS-DOS:
$ ia16-elf-gcc hello.c
$ file a.out
a.out: COM executable for DOS