Турбо С: руководство пользователя. Часть 2

Турбо С: руководство пользователя. Часть 2 - Стр. 56

Печать PDF
Индекс материала
Турбо С: руководство пользователя. Часть 2
Стр. 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
Все страницы
     жиме.                                                                      
                                                                                
          - Если переменная среды 87 не определена, то начальная прог-          
     рамма проходит через свой алгоритм автообнаружения для того, что-          
     бы  проверить, доступна ли микросхема 8087/80287, и программа ра-          
     ботает в соответствии с результатом этой проверки.                         
                                                                                
          Если переменная среды 87 определена (любым значением), но вы          
     хотите переопределять ее,  то введите следующее выражение в приг-          
     лашение ДОС:                                                               
                                                                                
          C> SET 87=                                                            
                                                                                
     (Это означает нажатие клавиши "Ввод" сразу после знака равенства)          
                                                                                
                                                                                
               Регистры и 8087/80287                                            
     -----------------------------------------------------------------          
                                                                                
          Существует 2 момента, относящихся к  регистрам,  которые  вы          
     должны учитывать, когда используете плавающую точку.                       
                                                                                
          Во-первых,  в  режиме эмуляции 8087/80287 регистровый цикли-          
     ческий переход не поддерживается.                                          
                                                                                
          Во-вторых, если вы используете плавающую точку совместно  со          
     встроенным  ассемблером, то необходимо быть особенно внимательным          
     при использовании регистров, потому что регистр 8087/80287 очища-          
     ется перед Турбо Си-вызовами функции. Вам понадобится  извлечь  и          
     сохранить  регистры  8087/80287  до  вызова функций, использующей          
     сопроцессор, даже если вы уверенны,  что  существует  достаточное          
     количество свободных регистров.                                            
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                

                         - 461,462 -
                                                                                
               Использование matherr с плавающей точкой                         
     -----------------------------------------------------------------          
                                                                                
          Если  во  время выполнения программы обнаруживается ошибка в          
     одной из подпрограмм с плавающей точкой, то эта подпрограмма  ав-          
     томатически  вызывает  _matherr  с несколькими аргументами. Затем          
     _matherr заполняет своими аргументами особую  структуру  (опреде-          
     ленную  в math.h) и вызывает matherr с указателем на эту структу-          
     ру.                                                                        
                                                                                
          matherr - это зацепка, которая позволяет вам  написать  свою          
     собственную  подпрограмму  анализа  ошибки. По умолчанию, matherr          
     только возвращает 0, и ничего более. Однако, вы  можете  изменить          
     matherr  соответствующим образом для того, чтобы создать подпрог-          
     рамму обработки ошибок плавающей  точки.  Такая  модифицированная          
     matherr возвращает величину, отличную от 0, если ошибка была исп-          
     равлена, и 0 в противном случае.                                           
                                                                                
          Для   получения  более  подробной   информации  о  matherr и          
     _matherr смотри описание matherr в части 2 "Справочного руководс-          
     тва по Турбо Си".                                                          
                                                                                
                                                                                
                                                                                
                          Предостережения и советы                              
                          ------------------------                              
                                                                                
                         Как Турбо Си использует RAM                            
     -----------------------------------------------------------------          
                                                                                
          Во время  компиляции Турбо Си не хранит на диске промежуточ-          
     ные структуры данных (на диск Турбо Си записывает только  объект-          
     ные файлы .OBJ).  Для всех промежуточных структур данных Турбо Си          
     использует RAM. Поэтому вы можете столкнуться с сообщением OUT OF          
     MEMORY..., если для компилятора не достаточно памяти.                      
                                                                                
          Чтобы решить эту проблему, нужно сделать ваши функции меньше          
     или разделить  файл,  который имеет большие функции.  Можно также          
     стереть любые резидентные программы,  установленные вами,   чтобы          
     освободить большую память для Турбо Си.                                    
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                

                         - 463,464 -
                                                                                
                                                                                
               Нужно ли вам использовать Паскаль-соглашения?                    
     -----------------------------------------------------------------          
                                                                                
          Нет, если только вы прочли эту главу и хорошо разобрались  в          
     ней.                                                                       
                                                                                
          Запомните, что если вы устанавливаете связи главного файла с          
     помощью Паскаль-соглашений по вызову, то должны объявить main как          

     Си-функцию:                                                                
                                                                                
          cdecl  main(int argc, char * argv[], char * envp[])                   
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
               Заключение                                                       
     -----------------------------------------------------------------          
                                                                                
          Вы увидели,  как  использовать все 3 аспекта низкоуровневого          
     программирования в Турбо Си (псевдопеременные, встроенный ассемб-          
     лер, функции прерывания); вы также изучили связь с другими языка-          
     ми,  включая ассемблер; вы были ознакомлены с некоторыми деталями          
     использования подпрограмм с плавающей точкой; вы поняли, как вза-          
     имодействуют различные модели памяти в 8086. Теперь вы можете ис-          
     пользовать  все эти приемы для получения полного контроля над ва-          
     шим компьютером. Наилучших вам пожеланий!