Архитектура 32 бит

В архитектуре 32 бита указатель имеет длину 4 байта, а двойной - длину 8 байт. Но почему в этой архитектуре указатель не имеет длины 8 байтов, как double? Что позволило бы расширить адресацию, как в 64-битной архитектуре!

Всего 1 ответ


То есть вы пытаетесь сделать обобщения, где они не могут быть сделаны.

Вы должны посмотреть на каждую конкретную архитектуру процессора. Вы должны взглянуть на инструкции, которые могут, например, выполнять адресацию на основе регистра, какой бы термин ни использовалась в этой архитектуре, зарегистрировать косвенный или любой другой. Мой процессор может иметь 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, RISC-V, AVR и т. Д. Эти документы в той или иной форме показывают, как работает адресация, особенно в старых / меньших архитектурах, которые пытались использовать адресную шину шире, чем мог вместить один регистр. Те часто использовали рисунки / диаграммы, чтобы показать, как создается адрес.