Серия Prime 50 использовала сегмент 07777, смещение 0 для нулевого указателя, по крайней мере для PL / I. Более поздние модели использовали сегмент 0 со смещением 0 для нулевых указателей в C, что потребовало новых инструкций, таких как TCNP (тестовый нулевой указатель C), очевидно, в качестве дополнения ко всему существующему плохо написанному коду C, который делал неверные предположения. Старые машины Prime с адресацией слов также были известны тем, что требовали указателей большего размера (char *), чем указатели слова (int *).
Серия Eclipse MV от Data General имеет три архитектурно поддерживаемых формата указателей (указатели слов, байтов и битов), два из которых используются компиляторами C: указатели байтов для char * и void * и указатели слов для всего остального , По историческим причинам во время эволюции 32-битной линии MV из 16-битной линии Nova указатели слов и указатели байтов имели биты смещения, косвенности и защиты кольца в разных местах слова. Передача несоответствующего формата указателя в функцию привела к сбоям защиты. В конце концов, компилятор MV C добавил множество опций совместимости, чтобы попытаться справиться с кодом, имеющим ошибки несоответствия типов указателей.
Некоторые мэйнфреймы Honeywell-Bull используют битовую комбинацию 06000 для (внутренних) нулевых указателей.
CDC Cyber 180 Series имеет 48-битные указатели, состоящие из кольца, сегмента и смещения. Большинство пользователей (в кольце 11) имеют нулевые указатели 0xB00000000000. На старых CDC-машинах с одним дополнением часто использовалось слово «все-один-бит» в качестве специального флага для всех типов данных, включая недопустимые адреса.
Старая серия HP 3000 использует другую схему адресации для байтовых адресов, чем для адресных слов; как и некоторые из машин, описанных выше, поэтому он использует различные представления для указателей char * и void *, чем для других указателей.
Symbolics Lisp Machine, помеченная архитектура, даже не имеет обычных числовых указателей; он использует пару (в основном, несуществующий дескриптор) в качестве нулевого указателя C.
В зависимости от используемой «модели памяти», процессоры семейства 8086 (ПК
совместимы) могут использовать 16-битные указатели данных и 32-битные функции
указатели или наоборот.
Некоторые 64-битные машины Cray представляют int * в младших 48 битах
слово; char * дополнительно использует некоторые из старших 16 бит, чтобы указать
адрес байта в слове.
Дополнительные ссылки: сообщение от Криса Торека с более подробной информацией.
о некоторых из этих машин.