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




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

                                                                                
                                                                                
                                                                                
                                                                                
                                                                                

                         - 343,344 -
                                                                                
                                                                                
     ННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН          
     РАЗМЕР ДАННЫХ                  РАЗМЕР ПРОГРАММЫ                            
                   ННННННННННННННННННННННННННННННННННННННННННННННННННН          
                           64К                        1М                        
     ННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН          
                                                                                
         64К       Крохотная(данные и програм-                                  
                   ма перекрываются;                                            
                   общий размер 64К)                                            
                                                                                
                   Малая (не перекрываются;   Средняя                           
                   общий размер 128К)         (малые данные,большая             
                                              программа)                        
                                                                                
         1М        Компактная                 Большая                           
                   (большие данные,малая      (большие данные и                 
                   программа)                 программы)                        
                                                                                
                                              Огромные     (аналогично          
                                              большой,  только  данные          
                                              больше 64К )                      
                                                                                
                                                                                
     ННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН          
                                                                                
                      Таблица 12.1. Модели памяти.                              
                                                                                
          Важное замечание. Когда вы компилируете модуль (указывая ис-          
     ходный файл,  содержащий несколько функций), результирующая прог-          
     рамма не может быть более 64К, т.к. все функции должны включаться          
     в один программный сегмент.  Это верно,  даже если вы используете          
     модели с большими программами (среднюю, большую и огромную). Если          
     ваш модуль больше величины одного программного сегмента (64К), то          
     вы должны разделить его на разные исходные программные файлы, от-          
     компилировать  каждый  файл  в  отдельности и затем объединить их          
     вместе.  Проще говоря, хотя огромная модель и позволяет статичес-          
     ким  данным занимать объем больше,  чем 64К,  в каждом модуле все          
     равно должно быть меньше, чем 64К.                                         
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                

                         - 345,346 -
                                                                                
              Порядок программирования смешанных моделей памяти:                
              модификация типа адресации                                        
     -----------------------------------------------------------------          
                                                                                
          Турбо Си вводит семь новых ключевых  слов,  отсутствующих  в          
     стандартном (Керниган и Ритчи или ANSI) Си: near, far, huge, _cs,          
     _ds,  _es, _ss. С некоторыми ограничениями и предупреждениями они          
     могут  использоваться  как  модификаторы  указателей (в отдельных          
     случаях функций).                                                          
                                                                                
          В Турбо Си вы можете модифицировать функции и указатели, ис-          
     пользуя ключевые слова near,  far или huge.  Ранее в этом разделе          
     мы объясняли суть near-,  far- и huge- указателей к данным. Near-          
     функции  вызываются  ближними  запросами и заканчиваются ближними          
     возвратами. Far-функции,  соответственно,  вызываются удаленно  и          
     завершаются удаленными возвратами. Huge-функции подобны far-функ-          
     циям,  но,  в отличие от них,  huge могут изменять содержимое ре-          
     гистра DS.                                                                 
                                                                                
          Есть также  четыре специальных near-указателя к данным: _cs,          
     _ds, _es, _ss. Это 16-битные указатели, которые специфически свя-          
     заны с соответствующими сегментными регистрами. Например, если вы          
                                                                                
                                                                                
     объявите указатель                                                         
                                                                                
          char _ss *p ;                                                         
                                                                                
     то p будет содержать 16-битное смещение в стековом сегменте.               
                                                                                
          Функции и указатели в программе по умолчанию устанавливаются          
     near или far в зависимости от выбранной вами модели памяти.  Если          
     функция или указатель near, то она автоматически связывается либо          
     с CS, либо с DS регистром.                                                 
                                                                                
         Таблица 12.2 показывает, как это происходит. Заметим, что ве-          
     личина  указателя  соответствует  или  работе в рамках 64К (near,          
     внутри сегмента), или работе в адресном пространстве до 1М  (far,          
     имеет свой собственный адрес сегмента)                                     
                                                                                
                                                                                





- 347,348 - НННННННННННННННННННННННННННННННННННННННННННННННННННННННННН Модель памяти Указатель к функции Указатель к данным НННННННННННННННННННННННННННННННННННННННННННННННННННННННННН Крохотная near,_cs near,_ds Малая near,_cs near,_ds Компактная far near,_ds Средняя near,_cs far Большая far far Огромная far far НННННННННННННННННННННННННННННННННННННННННННННННННННННННННН Таблица 12.2. Результирующие указатели Объявление функций как NEAR или FAR ----------------------------------------------------------------- Иногда вам может захотеть (или понадобиться) отменить тип функции, принимаемый по умолчанию для вашей модели памяти, пока- занной в таблице 12.1. Например, предположим, вы используете большую модель памяти, но имеете в вашей программе рекурсивную (самовызывающуюся) функцию, такую как double power (double x, int exp) { if (exp <= 0) return(0); else return(x*power(x,exp-1)); } Power постоянно вызывает сама себя. Это делается с помощью удаленного вызова, что требует большего размера стека и более длительных циклов. Объявив power как near, вы снимете некоторые расходы, заставляя все вызовы к этой функции быть ближними: - 349,350 - double near power (double x, int exp) Такое описание гарантирует, что power будет вызываема только из того программного сегмента, в котором она оттранслирована, и все ее вызовы будут near. Это означает, что если вы используете большую программную модель (среднюю, большую или огромную), вы можете вызывать power только в том модуле, где она определена. Другие модули имеют свои собственные программные сегменты и, следовательно, не могут вызы- вать near-функции в других модулях. Более того, near-функция должна быть определена или объявлена до первого ее использования, иначе компилятор не сможет понять, что необходимо генерировать near-вызов. Наоборот, объявление функции far означает, что и возврат бу- дет far. В малых программных моделях far-функции должны быть объ- явлены или определены до первого их использования, что обеспечи- вает их запуск через far-вызов. Вернемся к примеру с power. Теперь понятно также, что необ- ходимо объявить power как статическую, т.к. она будет вызываться только внутри текущего модуля. В этом случае, если она будет ста- тической, ее имя станет недоступно любой функции, находящейся вне модуля. Так как power всегда задействует фиксированное число ар- гументов, вы можете еще больше ее оптимизировать, объявив ее как pascal, а именно: static double near pascal power (double x, int exp) - 351,352 -


Страницы : 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
Форумы политика, лучшие анекдоты
знакомства.