BIGLIB
  большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно
 
АСТРОЛОГИЯ
  книги по астрологии
 
КРИМИНАЛ
  книги про криминал
 
ДЕТЕКТИВЫ
  детективы известных
   писателей
 
ФАНТАСТИКА
  фентези, фантастика,   фантастические повести
 
ПРИКЛЮЧЕНИЯ
  книги про приключения,   путешествия
 
ПОЛИТИКА
  книги про политиков,   репрессии
 
ПСИХОЛОГИЯ
  разнообразная литература   по психологии
 
КЛАССИКА
  классическая литература
 
КОМПЬЮТЕРНАЯ
  ЛИТЕРАТУРА
  про компютерное железо,   документация, языки   программирования
 
РЕЛИГИЯ, АТЕИЗМ
  книги про религию
 
ФИЛОСОФИЯ
  книги, которые заставляют   задуматься над   окружающим тебя миром.
 
ЭНЦИКЛОПЕДИИ
  самые интересные   энциклопедии на
   разные темы
 
МЕДИЦИНА
  медицинские книги,   методички,
   народные лечебники
 
КУЛИНАРИЯ
  рецепты тортов,   консервирование,
  все о спиртных
  напитках.
 
СТИХИ
  стихи популярных и не   очень авторов
 
ТВОРЧЕСТВО
  народное творчество,   стихи, песни и т.д.
 
ЮМОР
  анекдоты, приколы,   смешные истории
 
ЛЮБОВНЫЙ РОМАН
  мир высоких чувств и   любовных грез
 
ЭРОТИКА
  эротические рассказы,   книги о технике секса,   кама-сутра и др.




adfun.ru
Rambler's Top100 Rambler's Top100
    НА ГЛАВНУЮ
    РЕФЕРАТЫ
    ТОСТЫ
    ТЕСТЫ
    АВТО
    ДЛЯ СТУДЕНТА
    КНИГИ
    КОНТАКТ
 
Турбо С: руководство пользователя. Часть 2
Автор ""
Размер 800673 Байт
Страница 40 из 56
СКАЧАТЬ КНИГУ ЦЕЛИКОМ

     личину к far-указателю,  то изменяется только смещение.  Если ре-          
     зультат сложения превышает величину FFFF (это максимально возмож-          
     ная величина смещения),  то указатель делает циклический  переход          
     назад, к началу сегмента.  Например,  результатом прибавления 1 к          
     5031:FFFF, будет 5031:0000 (а не 6031:0000).  Аналогично, если вы          
     вычитаете 1 из 5031:0000, то получите 5031:FFFF (а не 5030:000F).          
                                                                                
          Если вы хотите сравнить указатели,  то надежнее использовать          
     или near-указатели, которые всегда используют один и тот же адрес          
     сегмента, или huge-указатели, описание которых следует далее.              
                                                                                
                                                                                
                                                                                
               Указатели типа HUGE                                              
     -----------------------------------------------------------------          
                                                                                
          Указатели типа huge (также как и far)  имеют 32-битную длину          
     и содержат как адрес сегмента,  так и смещение. Однако, в отличие          
     от far,  они нормализованы с целью решения проблем, рассмотренных          
     в предыдущем разделе.                                                      
                                                                                

                         - 327,328 -
                                                                                
          Что такое указатель типа huge? Это 32-битный указатель,  ко-          
     торый имеет наибольшую из возможных величину адреса сегмента. Так          
     как сегмент всегда начинается с адреса, кратного 16 (или 10h), то          
     это  означает,  что  смещение может принимать значения от 0 до 15          
     (от 0h до Fh).                                                             
                                                                                
          Как нормализовать указатель? Очень просто: переведите его  в          
     20-битный  адрес,  затем используйте правые 4 бита для смещения и          
     левые  16  бит  для  адреса  сегмента.  Например,  дан  указатель          
     2F84:0532; мы переведем его в абсолютный адрес 2FD72, который за-          
     тем нормализуется в 2FD7:0002. Приведем несколько указателей и их          
     нормализованные значения:                                                  
                                                                                
     0000:0123    0012:0003                                                     
     0040:0056    0045:0006                                                     
     500D:9407    594D:0007                                                     
     7418:D03F    811B:000F                                                     
                                                                                
          Теперь  вы  знаете,  что указатели типа huge всегда хранятся          
     нормализованными. Почему это важно? Потому, что для любого данно-          
     го адреса  памяти  имеется  только  один возможный указатель типа          
     huge - пара "сегмент:смещение".  Это означает,  что операторы  >,          
                                                                                
     >=, <, <= дадут правильный ответ для любого указателя типа huge.           
                                                                                
          Дополнительно к этому, все операторы >, >=, <, <= используют          
     полную 32-битную величину указателя типа huge.  Нормализация  га-          
     рантирует, что их результат всегда будет корректным.                       
                                                                                
          И, наконец, благодаря нормализации, смещение в указателе ти-          
     па huge автоматически делает циклический переход,  при достижении          
     величины 16,  но,  в отличие от far, сегмент также увеличивается.          
     Например,  если вы увеличиваете  811B:000F,  то  результат  будет          
     811C:0000;  аналогично, если вы уменьшаете 811C:0000, то получите          
     811B:000F. Эта особенность указателей типа huge позволяет манипу-          
     лировать структурами данных свыше 64К.                                     
                                                                                
          Однако при использовании указателей типа huge возрастают до-          
     полнительные расходы. Арифметические операции над указателями ти-          
     па huge выполняются с вызовом специальных подпрограмм,  и поэтому          
     они выполняются гораздо медленнее,  чем над указателями типа near          
     и far.                                                                     
                                                                                
                                                                                
                                                                                

                         - 329,330 -
                                                                                
               Шесть моделей памяти в Турбо Си                                  
     -----------------------------------------------------------------          
                                                                                
          Турбо Си позволяет вам избежать накладных расходов, исключая          
     те случаи,  когда вы сами этого не хотите.  Существует шесть раз-          
     личных моделей памяти, которые вы можете выбирать: крохотная (на-          
     именьшая),  малая, средняя, компактная, большая и огромная. Какую          
     из них выбрать, зависит от ваших требований. Вот краткая характе-          
     ристика каждой из них:                                                     
                                                                                
          Крохотная                                                             
          ---------                                                             
          Как вы  можете предположить,  это самая маленькая из моделей          
     памяти. Все четыре сегментных регистра (DS,CS,SS,ES) указывают на          
     один  и тот же адрес,  поэтому вы имеете всего 64К для всех прог-          
     рамм,  данных и  массивов.  В  этом  случае  используются  только          
     near-указатели.  Используйте  эту  модель,  когда у вас маленькая          
     оперативная память.  Программы с крохотной моделью  памяти  могут          
     быть переведены в .COM формат.                                             
                                                                                
          Малая                                                                 
          -----                                                                 
                                                                                
          Программный сегмент  и сегмент данных различны и не перекры-          
     ваются, поэтому у вас есть 64К для программ и 64К для статических          





данных. Сегменты стека и дополнительные сегменты данных начинают- ся с того же адреса, что и сегмент данных. В этом случае исполь- зуются только near-указатели. Это наилучшая модель для большинс- тва реализаций. Средняя ------- Far-указатели используются для программ, но не для данных. В результате статические данные ограничены 64К, но программа может иметь величину до 1М. Эта модель является наилучшей для больших программ, которые не хранят в памяти больших обьемов данных. Компактная ---------- Прямо противоположна средней, т.е. far-указатели используют- ся для данных, а не для программ. Программы ограничиваются вели- чиной в 64К, а данные (но не статические) могут быть до 1Мб. Эта модель наиболее удобна, если ваша программа маленькая, но вам не- обходимо адресовать большие объемы данных. - 331,332 - Большая ------- Far-указатели используются как для программы, так и для дан- ных. И программа, и данные занимают область до 1М; эта модель не- обходима только для очень больших программных продуктов. Огромная -------- Far-указатели используются для программы и для данных. Турбо Cи обычно ограничивает величину статических данных до 64К; огром- ная модель памяти снимает это ограничение, позволяя статическим данным занимать пространство более 64К. Иллюстрации (Рис. 12.2-12.7) показывают, как в микропроцес- соре 8086 реализуется 6 моделей памяти Турбо Си. Сегментные Размер регистры: Нач.адрес. сегмента: CS,DS,SS -->ЙНННННННННННННННННННННННННННННН» Й є_TEXT class 'CODE'Программа є » є МНННННННННННННННННННННННННННННН№ є DGROUP Н№ є_DATA class 'DATA'иниц.данные є є є МНННННННННННННННННННННННННННННН№ є И є_BSS class 'BSS'не иниц,данныеє є МНННННННННННННННННННННННННННННН№ МН до 64К є ХИП є є МНННННННННННННННННННННННННННННН№ є є Свободная область є є SР(ТOS) -->МНННННННННННННННННННННННННННННН№ є Стартовый SP-->є СТЕК є ј ИННННННННННННННННННННННННННННННј Конеч.адрес. Рис. 12.2. Крохотная модель сегментации памяти - 333,334 - Сегментные Размер регистры: сегмента: Нач.адрес. CS -->ЙНННННННННННННННННННННННННННННН» є_TEXT class 'CODE' программа є до 64К DS,SS -->МНННННННННННННННННННННННННННННН№ Й є_DATA class 'DATA'иниц.данные є » DGROUР Н№ МНННННННННННННННННННННННННННННН№ є И є_BSS class 'BSS'не иниц.данныеє є МНННННННННННННННННННННННННННННН№ є є ХИП є МН до 64К МНННННННННННННННННННННННННННННН№ є є Свободная область є є SP(TOS) -->МНННННННННННННННННННННННННННННН№ є є СТЕК є ј Стартовый SP-->МНННННННННННННННННННННННННННННН№ до конца є FAR ХИП є памяти МНННННННННННННННННННННННННННННН№ є Свободная область є ИННННННННННННННННННННННННННННННј Конеч.адрес. Рис.12.3. Малая модель сегментации памяти


Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 [40] 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56


adfun.ru









Форум раскрутка сайта и интернет-реклама
реклама - рекламное агентство -
Интернет PR агентство чат и форум
волчат знакомства - сайт знакомств
бесплатные компьютерные игры
фото знакомства
новые стеклопакеты -
качественное остекление балконов
портал - пластиковые окна -
закажите окна пвх в Москве

частная стоматология в Москве:
надежная стоматологическая клиника
протезирование зубов и
отбеливание зубов в стоматологии
Музыка - скачать mp3 музыка
каталог партнерские программы
ручной бесплатный обмен ссылками цифровые камеры цифровые фотоаппараты -
цифровые видеокамеры

театры - заказ билетов в театр -
магазин - продажа компьютеров
в Москве форум Испания - жилье -
недвижимость в испании

турфирма - испания туры
Переводы - бюро переводов
Законы - закон о товарных знаках,
Грузовые перевозки. АсМАП. Дальнобой закон о рекламе
Интернет казино
реклама на форуме и контекстная реклама
на Яндексе Баннерная сеть и
интернет каталог сайтов Holiday.Ru
Форумы политика, лучшие анекдоты
знакомства.