vak: (Daemon)
[personal profile] vak
Оказывается, для 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

Date: 2025-11-05 11:52 (UTC)
From: [personal profile] chabapok
А есть некоторое кол-во сертифицированного оборудования, которое всех эксплуатационщиков устраивает. (Причины почему устраивает могут быть очень разные. Это отдельная большая тема)

Такое оборудование было сертифицировано много лет назад, причем вместе с документацией (в том числе, бывало и так, что с неверной).

У нас был случай, когда руководство одного завода (завод сейчас на оккупированных пилят на металл) сказало "а мы хотим шнайдер электрик". Сделали им шнайдер. Девайсы были на 80186 проце, в документации были ошибки, из за которых было заказано не то, что нужно. Меняли по гарантии. Определенное количество коммандировок было проезжено зря из за этого, и определенное кол-во нервов потрачено. И это такие ошибки, которые в 80ых сертифицировали в документации, нельзя менять.

Date: 2025-11-05 17:11 (UTC)
dmarck: (Default)
From: [personal profile] dmarck
> И это такие ошибки, которые в 80ых сертифицировали в документации, нельзя менять.

точнее, можно, но проводя полную процедуру обновления сертификации (иногда-таки оправдано; но -- да, крайне редко)

Date: 2025-11-05 18:10 (UTC)
From: [personal profile] chabapok
это понятно

Но если в процедуру сертификации на безопасность не заложили механизм исправления критических ошибок, выявленных по ходу дела, то это форменный долбоебизм, убивающий саму идею.

Но мы в оффтопе.

Вот этот компилтятор для 16-битной архитектуры. Он используется, видимо, для всякого такого, которое сертифицировали еще тогда и нет денег обновиться

Date: 2025-11-05 18:37 (UTC)
dmarck: (Default)
From: [personal profile] dmarck
всё так, по всем пунктам

(да, про процедуры сертификации отдельных систем Боинга и отдельных энергосистем я в курсе, и лучше б не был бы! -- смайлов по вкусу)

Date: 2025-11-05 18:38 (UTC)
dmarck: (Default)
From: [personal profile] dmarck
апдейт: если я правильно зачёл комментарий выше, про именно что безопасность при обновлении речи не шло; а шло -- об коррекции проектирования

Date: 2025-11-05 21:19 (UTC)
From: [personal profile] chabapok
Не шло.

Безопасность - это в данном случае про низкую вероятность сбоя, когда на выходах будет не то, что было задумано. Именно не то в результате аппаратного сбоя.

Какой-нибудь пример, чтобы было понятно. Представим себе управляемый автомобильный перекресток. Например, в результате сбоя, обеим направлениям показывает зеленый. "Безопасность" - про то, что вот такой хрени не должно произойти, или вероятность не выше такой-то. Обычно там 10 в минус большой степени.

Я, кстати, не видел, на что эти девайсы сертифицированы. Просто все на заводе том вокруг бегали и рассказывали, что девайсы просто супер, сертифицированы на все, и вообще чуть ли не только в них счастье.

В нашем случае, ничего серьезного произойти не могло. А мои нервы серьезным считаю только я. Но во всей документации, прайсах, брошюрах модули шли как имеющие на выходе транзисторы. По факту там были тиристоры. В остальном они совместимы. Прошил, воткнул куда-то - вполне себе возможная ситуация.

Стоит еще порекомендовать вам загуглить канонический случай - therac 25. Там правда, не аппаратный сбой, а ошибка, ненамеренно заложенная низко квалифицированными программистами. И если рассматривать девайс как такой вот "черный ящик", то это случай его работы не так, как задумывалось. Но наверняка ж он тоже был сертифицирован. И если бы эти сертифицирующие сертификаторы ответственно подошли к делу, то вполне можно было увидеть, что проблема есть.

Date: 2025-11-06 00:43 (UTC)
dmarck: (Default)
From: [personal profile] dmarck
(отчасти, кажется, коллега) "Обнялись и заплакали" ©

простите, ежли задел ненароком

Date: 2025-11-06 07:56 (UTC)
From: [personal profile] chabapok
%))

На самом деле, подход "возьмем старое, оно проверено временем" может иметь место. У интел реально случаются всякие баги, вон буквально недавно интел признала, что с теплоотводом какой-то серии есть проблемы. А еще вон даже в википедии про ядро Goldmont написано, что при постоянной работе несколько лет могут быть проблемы.

Поэтому, часто лучше ничего не делать, чем что-то делать. Никто не хочет брать на себя ответственность за потенциальные проблемы. Поэтому, доля объективного тут тоже есть.

Date: 2025-11-07 14:26 (UTC)
From: [personal profile] chabapok
Там не только ленится. Мы как раз в гробу видели эти 80186. Там может быть куча разных причин, разной степени объективности.