То есть, вы пытаетесь сделать обобщения, где они не могут быть сделаны.
Вы должны взглянуть на каждую конкретную c архитектуру процессора. Вы должны взглянуть на инструкции, которые могут, например, выполнять адресацию на основе регистра, какой бы термин ни использовалась в этой архитектуре, зарегистрировать косвенный или любой другой. Мой процессор может иметь 32-битные регистры общего назначения, и все транзакции чтения и записи / загрузки и хранения должны использовать регистр общего назначения, поэтому на поверхности мой процессор, вероятно, ограничен 4 Гбайт адресного пространства, 32-битным адресом, байтовой адресуемой памятью. Некоторые на самом деле не поддерживают это, поэтому вы должны продолжать читать документы, но они не могут без решения других проблем, кроме этого. Итак, если бы я написал компилятор C для этого процессора, то разумный подход состоял бы в том, чтобы иметь 32-битные указатели.
В любом случае было бы невозможно сгенерировать 64-битный адрес. Хотя по какой-то причине Intel избили за то, что очень часто делали тогда и сейчас, добавляя больше битов адреса в другом месте, сегментирование архитектуры довольно распространено. Чаще всего это можно увидеть в 16-битных архитектурах (например, 8086 и других), где они хотели выйти за пределы 64 КБ для всей системы. Вам нужно создать решение для дополнительных битов адреса, вы можете выполнить команду двойного регистра, где адрес исходит из двух регистров: либо двойной ширины, что составляет 32-битный адрес, либо смещение, скажем, один сдвигается влево на 8 и добавляется к другому, делая 24 или как в Intel один сдвигается на 4 и добавляется, получая 20. Теперь в Intel не используется регистр общего назначения, а регистр специального назначения, что также не редкость, другие могут вызвать переключение целого банка, что, в отличие от подхода, основанного на междисциплинарном подходе, когда тот же внешний Внутренний адрес может быть доступен 16 различными способами. Вы можете получить доступ только к изолированным адресным пространствам размером 64 КБ, что усложняет программирование.
Это все равно, что сказать, что у моей машины четыре колеса, почему у меня нет 8 колес, и я еду на двух полосы в то же время. Потому что это другая машина. Если вы хотите, чтобы процессор имел 32-разрядные регистры, но имел 64-разрядное адресное пространство, это вполне возможно, но вам нужно спроектировать его на архитектурном уровне и предоставить инструкции или другие решения, чтобы разрешить эти транзакции, и быть достаточно разумным. спроектировать так, чтобы вы могли создать для него компилятор языка высокого уровня, например C, и не полагаться только на программистов на ассемблере, использующих его.
Документация свободно доступна для x86 (8088/86, 386 и т. д.) , ARM, MIPS, RIS C -V, AVR и так далее. Эти документы в той или иной форме показывают, как работает адресация, особенно в старых / меньших архитектурах, которые пытались использовать адресную шину шире, чем мог вместить один регистр. Эти часто используемые рисунки / диаграммы показывают, как создается адрес.