Я вполне уверен, что системы VAX все еще используются. Они не поддерживают IEEE с плавающей точкой; они используют свои собственные форматы. Alpha поддерживает форматы VAX и IEEE с плавающей точкой.
Векторные машины Cray, такие как T90, также имеют свой собственный формат с плавающей запятой, хотя в более новых системах Cray используется IEEE. (T90, который я использовал, был выведен из эксплуатации несколько лет назад; я не знаю, находятся ли еще в активном использовании.)
T90 также имел / имеет некоторые интересные представления для указателей и целых чисел. Собственный адрес может указывать только на 64-битное слово. Компиляторы C и C ++ имели CHAR_BIT == 8 (необходимо, потому что он запускал Unicos, разновидность Unix и должен был взаимодействовать с другими системами), но собственный адрес мог указывать только на 64-битное слово. Все операции на уровне байтов были синтезированы компилятором, и void*
или char*
сохранили смещение байта в старших 3 битах слова. И я думаю, что у некоторых целочисленных типов есть биты заполнения.
Мэйнфреймы IBM - еще один пример.
С другой стороны, этим конкретным системам не обязательно обязательно исключать изменения в языковом стандарте. Cray не проявил особого интереса к обновлению своего компилятора C до C99; предположительно то же самое применимо к компилятору C ++. может быть разумно ужесточить требования к размещенным реализациям, таким как требование CHAR_BIT == 8, с плавающей запятой формата IEEE, если не полная семантика, и дополнение к 2 без битов заполнения для целых чисел со знаком. Старые системы могли продолжать поддерживать более ранние языковые стандарты (C90 не умер, когда вышел C99), и требования могли быть более свободными для автономных реализаций (встроенных систем), таких как DSP.
С другой стороны, у будущих систем могут быть веские причины делать то, что сегодня считается экзотикой.