GCC для 8086
2025-11-04 22:46Оказывается, для 16-битной архитектуры Intel 8086 имеется компилятор GNU Си/Си++, и активно поддерживается. Раньше я слышал про bcc и OpenWatcom, но они имеют ограниченный функционал. С таким известием затея по восстановлению Юникса v7 (Venix) для писишки не выглядит безнадёжной.
Исходники: github.com/tkchia/gcc-ia16
Зеркало: gitlab.com/tkchia/build-ia16/-/releases
На интеловской Ubuntu компилятор ставится следующим образом:
Исходники: github.com/tkchia/gcc-ia16
Зеркало: gitlab.com/tkchia/build-ia16/-/releases
На интеловской Ubuntu компилятор ставится следующим образом:
На Ubuntu ARM64 аналогично, но из другого места: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
Глянем на сгенерённый код:sudo add-apt-repository ppa:catacombae/gcc-ia16-arm64
По умолчанию линкуется бинарник для MS-DOS:$ 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"
$ ia16-elf-gcc hello.c $ file a.out a.out: COM executable for DOS

no subject
Date: 2025-11-05 11:52 (UTC)Такое оборудование было сертифицировано много лет назад, причем вместе с документацией (в том числе, бывало и так, что с неверной).
У нас был случай, когда руководство одного завода (завод сейчас на оккупированных пилят на металл) сказало "а мы хотим шнайдер электрик". Сделали им шнайдер. Девайсы были на 80186 проце, в документации были ошибки, из за которых было заказано не то, что нужно. Меняли по гарантии. Определенное количество коммандировок было проезжено зря из за этого, и определенное кол-во нервов потрачено. И это такие ошибки, которые в 80ых сертифицировали в документации, нельзя менять.
no subject
Date: 2025-11-05 17:11 (UTC)точнее, можно, но проводя полную процедуру обновления сертификации (иногда-таки оправдано; но -- да, крайне редко)
no subject
Date: 2025-11-05 18:10 (UTC)Но если в процедуру сертификации на безопасность не заложили механизм исправления критических ошибок, выявленных по ходу дела, то это форменный долбоебизм, убивающий саму идею.
Но мы в оффтопе.
Вот этот компилтятор для 16-битной архитектуры. Он используется, видимо, для всякого такого, которое сертифицировали еще тогда и нет денег обновиться
no subject
Date: 2025-11-05 18:37 (UTC)(да, про процедуры сертификации отдельных систем Боинга и отдельных энергосистем я в курсе, и лучше б не был бы! -- смайлов по вкусу)
no subject
Date: 2025-11-05 18:38 (UTC)no subject
Date: 2025-11-05 21:19 (UTC)Безопасность - это в данном случае про низкую вероятность сбоя, когда на выходах будет не то, что было задумано. Именно не то в результате аппаратного сбоя.
Какой-нибудь пример, чтобы было понятно. Представим себе управляемый автомобильный перекресток. Например, в результате сбоя, обеим направлениям показывает зеленый. "Безопасность" - про то, что вот такой хрени не должно произойти, или вероятность не выше такой-то. Обычно там 10 в минус большой степени.
Я, кстати, не видел, на что эти девайсы сертифицированы. Просто все на заводе том вокруг бегали и рассказывали, что девайсы просто супер, сертифицированы на все, и вообще чуть ли не только в них счастье.
В нашем случае, ничего серьезного произойти не могло. А мои нервы серьезным считаю только я. Но во всей документации, прайсах, брошюрах модули шли как имеющие на выходе транзисторы. По факту там были тиристоры. В остальном они совместимы. Прошил, воткнул куда-то - вполне себе возможная ситуация.
Стоит еще порекомендовать вам загуглить канонический случай - therac 25. Там правда, не аппаратный сбой, а ошибка, ненамеренно заложенная низко квалифицированными программистами. И если рассматривать девайс как такой вот "черный ящик", то это случай его работы не так, как задумывалось. Но наверняка ж он тоже был сертифицирован. И если бы эти сертифицирующие сертификаторы ответственно подошли к делу, то вполне можно было увидеть, что проблема есть.
no subject
Date: 2025-11-06 00:43 (UTC)простите, ежли задел ненароком
no subject
Date: 2025-11-06 07:56 (UTC)На самом деле, подход "возьмем старое, оно проверено временем" может иметь место. У интел реально случаются всякие баги, вон буквально недавно интел признала, что с теплоотводом какой-то серии есть проблемы. А еще вон даже в википедии про ядро Goldmont написано, что при постоянной работе несколько лет могут быть проблемы.
Поэтому, часто лучше ничего не делать, чем что-то делать. Никто не хочет брать на себя ответственность за потенциальные проблемы. Поэтому, доля объективного тут тоже есть.
no subject
Date: 2025-11-06 21:25 (UTC)Так и сертифицированное оборудование на 80186 процессорах. Новое поколение руководства (и программистов) ленится вкладываться в разработку замены на современных микроконтроллерах.
no subject
Date: 2025-11-07 14:26 (UTC)