Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#12| Old Monk & Old Hero
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Различные авторы Весь текст 2311.07 Kb

Программирование и кодирование

Предыдущая страница Следующая страница
1 ... 97 98 99 100 101 102 103  104 105 106 107 108 109 110 ... 198
         толкнулся  на  какие-либо  проблемы,  пытаясь выполнить выбранную
         функцию.  Значения кодов ошибок и их смысл  перечислены  далее  в
         этой главе.


                                      - 7-24 -
                                Конфликт прерываний

              Программисты должны знать,  что прерывание 67h не зарезерви-
         ровано "официально" для спецификации расширенной памяти LIM; мно-
         гие другие доступные в продаже программы  также  используют  его.
         Конфликты в использовании этого прерывания часто озадачивают раз-
         работчиков и пользователей программного  обеспечения спецификации
         расширенной памяти,  когда приложение,  которое работает на одной
         машине,  перестает работать на другой с идентичной  конфигурацией
         оборудования.  Возможно  для прерывания 67h,  чтобы оно совместно
         разделялось более, чем одной программой, хотя менеджеры расширен-
         ной  памяти не программируются для выполнения этого.  Даже,  если
         менеджер расширенной памяти способен разделять использование пре-
         рывания 67h с другим программным обеспечением, один из двух доку-
         ментированных методов обнаружения присутствия менеджера расширен-
         ной памяти может не сработать,  если другой обработчик прерывания
         встанет в цепь перед обработчиком прерывания менеджера  расширен-
         ной памяти.
              Поскольку применение прерывания 67h встроено  в спецификацию
         расширенной памяти LIM,  любое приложение, написанное для исполь-
         зования расширенной памяти,  связывается с менеджером расширенной
         памяти  путем  выдачи  этого прерывания. Таким образом, конфликты
         из-за прерывания 67h между менеджером расширенной памяти и други-
         ми  программами  могут  быть  разрешены только,  если программное
         обеспечение,  не относящееся к спецификации  расширенной  памяти,
         может быть реконфигурировано или модифицировано,  чтобы использо-
         вать другой вектор прерывания.

                               Языки высокого уровня

              Как и  в  случае  с  системными вызовами DOS,  не существует
         стандартного интерфейса между языками высокого уровня, такими как
         Си, Паскаль  или  ФОРТРAH и спецификацией расширенной памяти LIM.
         Однако, разработчики, которые желают обращаться к расширенной па-
         мяти из приложений,  написанных на языках высокого уровня, обычно
         имеют несколько жизнеспособных альтернатив.  В  продаже  доступны
         несколько  библиотек  функций спецификации расширенной памяти для
         некоторых различных языков.  Многие популярные  языковые  системы
         обладают подпрограммами или функциями, которые обеспечивают общие
         средства для доступа к регистрам микропроцессора и  выдачи  прог-
         раммных прерываний. Кроме того, языки высокого уровня должны так-
         же обеспечивать какой-либо способ для определения удаленных  ука-
         зателей (регистр сегмента плюс смещение) для  адресации  структур
         данных, передаваемых для менеджера расширенной памяти.
              Программисты, знающие язык ассемблера 808х, знакомые со свя-
         зыванием подпрограмм и соглашениями о передаче параметров их язы-
         ка высокого уровня,  найдут,  что несложно создать набор программ
         сопряжения для спецификации расширенной памяти. Пример такого на-
         бора, написанного на языке Си фирмы Microsoft версия 5.0,  приво-
         дится в конце данной главы вместе с другими программами.

                             Обработка условий ошибок

              Каждый программист, пытающийся написать надежное программное
         обеспечение,  должен ожидать, что придется обрабатывать неизбежно
         появляющиеся ошибки.  Спецификация расширенной памяти LIM 4.0 оп-
         ределяет 36 различных условий ошибок,  которые  может  возвращать

                                      - 7-25 -
         менеджер расширенной памяти, так же как и код, который сигнализи-
         рует об успешном завершении функции. Листинг 7-1 содержит опреде-
         ления для кодов ошибок спецификации расширенной памяти LIM 4.0, а
         в табл. 7-3 перечислены коды состояний ошибок.
              Менеджер расширенной  памяти возвращает детализированный код
         состояния завершения в регистре AH для каждого запроса на  обслу-
         живание при возврате из прерывания.  По отношению к обнаружению и
         сообщению об ошибках интерфейс программирования спецификации рас-
         ширенной памяти более последовательный и менее сложный,  чем DOS.
         Для обнаружения и сообщения условия  ошибки,  последовавшего  при
         вызове DOS,  программист должен проанализировать регистр или флаг
         переноса и затем выдать другой системный  вызов  для  возвращения
         детализированного кода ошибки.
                                                         Таблица 7-3
                  Коды состояний спецификации расширенной памяти
                             Lotus/Intel/Microsoft 4.0
         ДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
         Код ¦                         Описание
         ДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
         00H ¦Указанная функция завершилась без ошибок
         80H ¦Отказ программного обеспечения драйвера менеджера расширенной
             ¦памяти
         81H ¦Драйвер менеджера расширенной памяти  обнаружил  аппаратурный
             ¦отказ
         82H ¦Драйвер менеджера расширенной памяти занят (ничего другого не
             ¦произошло)
         83H ¦Hельзя отыскать указанного обработчика
         84H ¦Код функции неопределен
         85H ¦В настоящий момент нет доступных обработчиков
         86H ¦Произошла ошибка восстановления контекста отображения
         87H ¦Для запроса недостаточно общего числа страниц
         88H ¦Для запроса недостаточно числа неразмещенных страниц
         89H ¦Был запрос на нуль логических страниц из функции, совместимой
             ¦с LIM 3.2
         8AH ¦Логическая страница вне диапазона указанного обработчика
         8BH ¦Физическая страница вне диапазона
         8CH ¦Переполнение области сохранения контекста регистров отображе-
             ¦ния
         8DH ¦У стека контекста регистров отображения  уже  есть  контекст,
             ¦связанный с указанным обработчиком
         8EH ¦У стека контекста регистров отображения нет контекста, связан-
             ¦ного с указанным обработчиком
         8FH ¦Была запрошена неопределенная подфункция
         90H ¦Тип атрибута не определен
         91H ¦Система не поддерживает неразрушаемость (энергонезависимость)
         92H ¦При  передвижении  области произошла частичная перезапись ис-
             ¦точника
         93H ¦Область  расширенной памяти слишком велика для указанного об-
             ¦работчика
         94H ¦Области обычной и расширенной памяти перекрываются
         95H ¦Смещение в пределах логической страницы превосходит длину ло-
             ¦гической страницы
         96H ¦Длина области превышает предел в 1 Мбайт
         97H ¦Области расширенной памяти источника и приемника имеют один и
             ¦тот же обработчик и перекрываются
         98H ¦Hеопределенные/неподдерживаемые  типы памяти источника и при-
             ¦емника

                                      - 7-26 -
         9AH ¦Указанный  альтернативный  набор регистров отображения не су-
             ¦ществует
         9BH ¦Все альтернативные наборы регистров  отображения/ПДП исполь-
             ¦зуются
         9CH ¦Hе поддерживаются альтернативные наборы регистров отображения
             ¦/ПДП
         9DH ¦Указанный  альтернативный  набор регистров отображения/ПДП не
             ¦определен, не размещен или является текущим
         9EH ¦Закрепленные каналы ПДП не поддерживаются
         9FH ¦Указанный закрепленный канал ПДП не существует
         A0H ¦Hе  может быть найдено значение обработчика, соответствующее
             ¦указанному имени обработчика
         A1H ¦Обработчик с указанным именем уже существует
         A2H ¦Попытка перехода к началу 1-Мбайтного  адресного пространства
             ¦во время передвижения или обмена
         A3H ¦Содержимое  структуры  данных  пользователя,  переданное  для
             ¦функции искажено или бессмысленно
         A4H ¦Операционная система не допускает обращения к функции
         ДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                               Листинг 7-1.EMMERR.H
         ------------------------------------------------------------------

         /*

         Продукт:       Диск над;
         Версия:        2.00
         Наименование:  emmerr.h
         Содержание: определения кодов ошибок спецификации расширенной па-
                        мяти LIM 4.0
         Ссылка: спецификация расширенной памяти LIM версия 4.0 стр.А5-А10
         */

        #defineFRSTEMERR  0x80  /*номер первой ошибки менеджера расширенной
                                                           памяти*/
        #defineLASTEMERR  0xA4  /*номер последней ошибки менеджера расши-
                                                          ренной памяти*/

        #defineFUNCCOC    0x00  /*указанн. функция завершилась без ошибок*/
        #defineEMDRVSWF   0x80  /*отказ  программного  обеспечения драйвера
                                             менеджера расширенной памяти*/
        #defineEMDRVHWF   0x81  /*драйвер менеджера расширенной памяти
                                             обнаружил аппаратурный отказ*/
        #defineEMDRVBSY   0x82  /*драйвер менеджера расширенной памяти
                                      занят (ничего другого не произошло)*/
        #defineHANDLNFD   0x83  /*нельзя отыскать указанного обработчика */
        #defineFUNCCUND   0x84  /*код функции неопределен */
        #defineHANDLINS   0x85  /*в настоящий момент нет доступных обра-
                                                                ботчиков*/
        #defineMAPCXPRO   0x86  /*произошла ошибка восстановления контекста
                                                              отображения*/
        #defineTOTPGINS   0x87  /*для запроса   недостаточно   общего
                                                           числа  страниц*/
        #defineUNAPGINS   0x88  /*для  запроса недостаточно числа
                                                    неразмещенных страниц*/
        #defineLPAGE2SM   0x89  /*был запрос на нуль логических страниц из
                                          функции,  совместимой с LIM 3.2*/

                                      - 7-27 -
        #defineLPAGERNG   0x8A  /*логическая страница вне диапазона ука-
                                                      занного обработчика*/
        #definePPAGE2BG   0x8B  /*физическая страница вне диапазона*/
        #defineMRCSAFUL   0x8C  /*переполнение области сохранения контекста
                                                   регистров  отображения*/
        #defineMRCSTDUP   0x8D  /*у  стека  контекста регистров отображения
                                уже есть контекст, связанный  с  указанным
                                                             обработчиком*/
        #defineMRCSTNFD   0x8E  /*у стека контекста регистров отображения
                                нет контекста, связанного с указанным об-
                                                               работчиком*/
        #defineSFUNCUND   0x8F  /*была запрошена неопределенн. подфункция*/
        #defineATTRBUND   0x90  /*тип атрибута не определен*/
        #defineNVSTGUNS   0x91  /*система  не поддерживает неразрушаемость
                                                    (энергонезависимость)*/
Предыдущая страница Следующая страница
1 ... 97 98 99 100 101 102 103  104 105 106 107 108 109 110 ... 198
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 

Реклама