Интернет магазин китайских планшетных компьютеров



Компьютеры - Модель памяти Intel x86 - Размеры указателя

25 июня 2011


Оглавление:
1. Модель памяти Intel x86
2. Размеры указателя
3. Модели памяти



Указатели могут быть типов near, far или huge. Ближний указатель ссылается на текущий сегмент, поэтому ни DS ни CS не должны изменяться при разыменовании указателя. Указатели этого типа являются самыми быстрыми, но ограничены областью указывания в 64 килобайта памяти.

Far-указатели содержат новое значение DS или CS. Для их использования регистр должен быть изменен, память разыменована, а затем регистр должен быть восстановлен. Такие указатели могут ссылаться на 1 мегабайт памяти. Необходимо отметить, что арифметические действия с указателями не изменяют участок сегмента указателя, а затрагивают лишь его смещение. Операции, выходящие за границы нуля или 65535, подвергнутся операции взятия по модулю 64K, как и любая обычная 16-битная операция. Например, знаковое −1 превращается в беззнаковое 0xFFFF или 65535.

К примеру, нижеследующий код выйдет за рамки и перепишет сам себя:

char far* myfarptr =  0x50000000L ; 
unsigned long counter ;
for // доступ к 128K памяти
  * = 7 ; // записать все семерки в нее

В какой-то момент счетчик counter станет равным, а результирующий абсолютный адрес превысит 0x5000:0000.

Большие указатели по сути являются дальними указателями, но нормализуются каждый раз когда они меняются, так что у них есть наивысший сегмент, доступный им для адресации. Это весьма медленно, но зато позволяет указателю указывать на несколько сегментов, а также позволяет более точно сравнивать указатели, как если бы в качестве платформы использовалась бы плоская модель памяти: это запрещает алиасинг памяти как упоминалось выше, поэтому два больших указателя, ссылающиеся на один и тот же участок памяти, всегда будут равны.



Просмотров: 3006


<<< Магнитоэлектронные запоминающие устройства
Объёмная оптическая память >>>