Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Модели памяти






 

Архитектура микропроцессора предусматривает разбиение оперативной памяти на физические сегменты. Размер каждого сегмента равен 64 Кбайт (К=1024). Вычисление физического адреса осуществляется путем сложения 16 - разрядного адреса сегмента, сдвинутого на 4 разряда, с адресом смещения в соответствии со следующей схемой:

 

15 0

........ Базовый

сегмент

 

15 0

 

Смещение...............

       
   
 
 

 


19 0

           
   
 
   
 

 

 


20 – разрядный физический адрес

 

 

Адрес сегмента адресует память с «точностью» до 16 байт (или с точностью до параграфа); смещение адресует память с точностью до байта в пределах 64 Кбайт, размещение в памяти которых определяется начальным адресом сегмента.

Распределение памяти для программы на языке Си осуществляется следующим образом:

1. По умолчанию программе выделяется суммарный объем памяти, равный 128 Кбайт.

- 64 Кбайт для кода программы;

- 64 Кбайт для статистических данных и стека.

Такая модель памяти называется малой (small). В малой модели для доступа к объектам программы (коду или данным) используются указатели типа near – ближние указатели.

2. Если размер кода программы превышает 64 Кбайта, а для размещения стека и данных достаточно 64 Кбайта, то применяется средняя модель памяти (medium). В такой модели для функций используются дальние указатели far, а для данных near.

3. Если размер программного кода не велик, а данные требуют больше, чем 64 Кбайт, то используется компактная (compact) модель памяти.

В такой модели доступ к объектам программы осуществляется с помощью указателей типа far, а в максимальной модели с помощью указателей типа huge.

4. Если как для данных, так и для кода требуется больше одного сегмента (> 64 Кбайт), то применяется либо большая (large) модель, либо огромная(huge) модель.

Разница между указателями far и huge заключается в том, что в адресной арифметике при вычислении far указателей на данные используется 16- битное смещение. Это ограничивает размер отдельного элемента данных значением 64 Кбайт. Указанное ограничение снято в огромной модели памяти. Адреса huge позволяют использовать массивы, размер которых превышает 64 Кбайт. В адресной арифметике используются все 32 разряда, а тип результата unsigned long.

Работая в любой модели памяти, программист имеет возможность ее модификации, применяя явно модификаторы near, far и huge.

Так, например, если за модификатором near, far или huge следует идентификатор, то соответствующий программный объект будет размещен либо в стандартном сегменте (для near), либо в другом сегменте (для far и huge).

Объявление

char far ch;

означает, что адрес ch будет иметь тип far.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.