LINUX.ORG.RU
ФорумTalks

Архитектуры где байт не 0..255 и софт под них

 


0

3

Кто с какими сталкивался (без археологии)? Какой из современно используемого софта можно под них скомпилировать чтобы он работал, без кучи костылей? Речь про системы, которые можно представить в виде чего-то компьютеро-подобного, например пытаться запустить на них, например, хотя бы обычное /bin/cat.

Напомню, Си формально не требует 8-битных байтов. А следовательно, используя всякие int8 int16 итд - рискуем получить слом совместимости с системами, где байты например 7-битные или 10-битные (там таких типов получается не будет). Стало интересно, насколько это актуально, или можно с чистой совестью продолжать забивать на это, как я всегда делал.

Я, конечно, понимаю, что такие системы, даже если существуют, очень редки. Вопрос в том, насколько они «очень редки» или же их сейчас вообще ровно ноль.

★★★★★

Сопутствующий этический вопрос. Допустим, я форкнул какую-то штуку и рефакторю её в свой стиль кода, выкидывая оттуда значительную долю нативных сишных целых типов и ставя uint8/16/32/64 вместо них (при этом следя чтобы внешнее апи, если оно у неё есть, оставалось совместимым с оригиналом). Насколько такое действие можно посчитать порчей хорошего кода и почему?

firkax ★★★★★
() автор топика
Последнее исправление: firkax (всего исправлений: 1)

У некоторых мк встречается байт в 16 или 32 бита.

Не кратных 8 в живых не осталось. Это всё музейные экспонаты.

wandrien ★★★★
()

обычное /bin/cat

Если я правильно помню, POSIX подразумевает байт (точнее char) размером в 8 бит, но помимо 0..255 могут быть и другие интерпретации этих бит.

ratvier ★★
()

На ютубе ретро-дядьку одного смотрю, он недавно показывал машину со «словом» в 31 бит. А ещё говорил в эпоху становления компов были и по 27 и всякие. Вот времена были…

PcheloBiaka
()

Живые — навряд ли есть.

sparkie ★★★★★
()

Архитектура, с которой работал - TMS320C2000, 16 бит в символе.

aiqu6Ait ★★★★★
()

В семействе ЭВМ «Мир» © (wikipedia.org) использовали BCD код на аппаратном уровне, что позволяло задавать требуемую точность в количестве значащих цифр и не знать про байты вообще.

quickquest ★★★★★
()

Наверное не совсем то о чем спрашиваешь, но в ML используют всякие чуднЫе форматы представления чисел типа NF4 или FP4 с 4 битами на число

cobold ★★★★★
()
Ответ на: комментарий от cobold

BCD арифметика и в x86 поддерживается

Ага, поддерживается, но это не основа всей архитектуры «Мир».

quickquest ★★★★★
()
Ответ на: комментарий от seiken

Как интересно: сайт отдаёт ошибку запрещённого штатовскими санкциями доступа, но эта ошибка не может до конца скачаться из-за ркн 16кб-замедлений.

firkax ★★★★★
() автор топика
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от Aceler

Уууу… многабукаф. а у вас нет такого же, но в форме видео? :))

PcheloBiaka
()
Ответ на: комментарий от firkax

Там была документация об особенностях сишного компилятора для соотв. DSP. Впрочем, если тебе нужен был именно в буквальном смысле слова невосьмибитный байт (а не сишный char), то это оффтопик.

seiken ★★★★★
()

Слышал у DSP встречается (это самое живое), а также у каких-то особо экзотических МК.

В том на чём можно запустить ОС общего назначения и при этом что не является музейным экспонатом (и ОС под это тоже музейный экспонат) в штучном экземпляре, везде 8 бит.

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 1)

Их уже очень и очень давно нет. Про них в 90стые уже рассказывалось, как про мамонтов из разряда - «а вот когда-то давным давным было и такое». Сейчас на самом деле такое проще какой-нить эмулятор нестандартной своей архитектуры сделать и в нём баловаться.

vtVitus ★★★★★
()
Последнее исправление: vtVitus (всего исправлений: 2)

байт - 8 бит. А вот машинное слово может быть разным, ага. Другое дело, что изначально вычислительные машины были не двоичные, а 10-ричные, т.е. 1 «бит» хранил 10 значений. Соответственно, адресация памяти была «побитовая».

tiinn ★★★★★
()
Ответ на: комментарий от tiinn

Машинное слово - это машинное слово, к байту отношение не имеет. Машинное слово соответствует разрядности процессора, то есть, максимально адресуемое число. А байт - это минимально адресуемое число. Изначально вычислительные машины были двоичными.

lenin386 ★★★★★
()
Ответ на: комментарий от lenin386

ЭВМ - да. А я про вычислительные машины писал. Опять же, после немцев были американцы, и их ЭВМ были десятеричными.

tiinn ★★★★★
()
Ответ на: комментарий от tiinn

Разве есть какие-то сомнения? Он и алфавит не знает. Z в немецком - «цэт».

GAMer ★★★★★
()

где байты например 7-битные или 10-битные

Никто уже их не будет делать. Элементарно компьютерные сети к ним привязаны плотно. Как разбирать сетевой пакет на 7-ми битной машинке? Это остаться только на уровне UART что ли? А http, utf-8, и т.д. и т.п.?

AlexVR ★★★★★
()

В голову первым делом пришло PICMicro - у них там Гарвардская архитектура с отдельной памятью для инструкций и отдельной памятью для данных, и вот в инструкциях там полная анархия - есть архитектуры с 12, 14 и даже 24 бит на инструкцию. Но память данных там вроде классическая, 8-кратная. Но это я так где-то слышал, сам с ними непосредтсвенно не работал.

YogSagot ★★☆
()
Ответ на: комментарий от AlexVR

Как разбирать сетевой пакет на 7-ми битной машинке?

У меня есть множество замечательных идей, как это сделать. Вот как с АЦП 12-битными работают, или ЦАП 14-битными. В чем проблема сетевой байт записывать в 2 машинных байта?

aiqu6Ait ★★★★★
()
Последнее исправление: aiqu6Ait (всего исправлений: 1)
Ответ на: комментарий от YogSagot

В голову первым делом пришло PICMicro

Так есть же 4-битный Nyquest :)

AlexVR ★★★★★
()
Ответ на: комментарий от AlexVR

Такие задачи часто встречаются на низком уровне, из актуального, например - инвертировать порядок байт. В протоколах TCP/IP всегда большой индеец, а на 86 процессорах - маленький индеец, и проблем особо нет.

aiqu6Ait ★★★★★
()
Ответ на: комментарий от firkax

Скорее похоже на ремонт плохого кода

Сишная идея того, что размер типа должен зависеть от архитектуры, а не быть подконтролен автору кода, не прошла проверку временем

pikabu
()
Последнее исправление: pikabu (всего исправлений: 1)

Напомню, Си формально не требует 8-битных байтов.
где байты например 7-битные

По стандарту C89 signed char должен покрывать диапазон от -127 до 127, а это минимум 8-bit. Поэтому если нужно использовать Си хотя бы стандарта с89, то нужны как минимум 8-битные байты.

Кто с какими сталкивался (без археологии)?

Лично я с таким не сталкивался, но несколько лет назад задался похожим вопрос и нашёл англоязычный форум, где человек задал такой же вопрос и ему ответил человек, который сказал что на работе он программирует микроконтроллеры для микроволновок, у которых один байт 4-бита. Если память не изменяет, тема была года 2018-2020.
Ну и дополнительно скажу, что я искал процессоры не только с не стандартными байтами, а вообще чем-то сильно отличающимся от x86, но при этом использующиеся на десктопах, серверах или мобилках. Нашёл только то, что до сих пор используются процессоры с big-endian, а также иногда бывают какие-то отклонения в реализации чисел с плавающей точкой (например в PlayStation 3 нет бесконечностей).

Taetricus
()
Ответ на: комментарий от PcheloBiaka

Ну мне попадались слова длиной 27 бит, каких-то 30 лет назад, в начале трудового пути.
Но да, это была очень сильно специфическая техника. Какая – не скажу.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от quickquest

И ведь мы школьным кружком ходили в институт программировать на «Мир-2»! До сих пор где-то перфолента с моим говнокодом лежит.

Конечно, понимание, насколько это была уникальная машина, пришло значительно позднее.

hobbit ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)