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

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


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)
Demon's Souls |#9| Heart of surprises

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


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

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

Предыдущая страница Следующая страница
1 ... 33 34 35 36 37 38 39  40 41 42 43 44 45 46 ... 198
         файла в MS-DOS. Средства языков программирования и системы MS-DOS
         предназначены для работы с этим типом  файлов.  Тип  файлов  .COM
         первоначально  был создан для совместимости с процессами операци-
         онной системы CP/M,  но этот тип не похож на вымирающий.  Даже  и
         сегодня в версии MS-DOS файлы типа .COM являются упрощенной узкой
         разновидностью файлов типа .EXE. С некоторой гибкостью файлы типа
         .EXE заменяются назначаемым по умолчанию форматом.COM. В  резуль-
         тате такого упрощения файлы типа .COM загружаются  гораздо  быст-
         рее, но различие скоростей тривиально для современных машин.
             После образования процесса макроассемблер MASM не знает  и не
         заботится о том,  чтобы знать, какой тип файла ассемблируется. Во
         время компоновки  компоновщик  LINK  обнаружит, что файлы формата
         .COM не имеют стекового сегмента,  но при этом компоновщик не бу-
         дет выражать свое неудовольствие.  Вот, когда выполняется функция

                                      - 3-24 -
         EXE2BIN для  преобразования  файлов  типа .EXE в файлы типа .COM,
         различия в файлах начинают обнаруживаться.
             Все объектные файлы,  вырабатываемые макроассемблером MASM, и
         файлы типа .EXE,  создаваемые компоновщиком LINK, могут содержать
         настраиваемые (переместимые) ссылки сегмента.  Эти файлы содержат
         таблицы,  которые включают списки, где в программе делаются явные
         ссылки на программу или кодовый сегмент по его адресу.  В связи с
         тем,  что адрес сегмента в программе будет зависеть от того,  где
         он  загружен в памяти,  когда загружается программа .EXE,  MS-DOS
         должна каким-либо образом обновить ячейки в программе,  где дела-
         ется ссылка этого сегмента,  изменяя значения для указания на те-
         кущий сегмент.  Этот процесс называется relocating  (настройкой).
         Перед  рассмотрением выполнения настройки посмотрим чем этот про-
         цесс отличается от загрузки файлов типа .COM.
             Когда EXE2BIN  выполняет  преобразование  файла  типа .EXE в
         файл типа .COM,  она просматривает файл типа .EXE для нахождения
         этих  ссылок на сегменты.  Если она находит явную ссылку на сег-
         мент в программе,  или неявную ссылку на другой не базовый  сег-
         мент,  она вырабатывает сообщение об ошибке,  указывающее на то,
         что файл не может быть преобразован. Кроме этого, EXE2BIN выпол-
         няет  проверку  того,  чтобы  программа начиналась с адреса 100h
         относительно базового сегмента. Если все эти условия удовлетворя-
         ются,  то EXE2BIN удаляет из файла всю настраиваемую информацию и
         вырабатывает файл типа .COM. Различия между этими двумя форматами
         программ кратко излагаются в таблице 3-3.

                                                         Таблица 3-3
                       Различия между форматами .COM и .EXE
         ________________________________________________________________
                                        |                |
                   Атрибуты             |    тип .COM    |   тип .EXE
         _______________________________|________________|_______________
         Количество допустимых сегментов|Только 1        |Несколько сег-
                                        |                |ментов
         _______________________________|________________|_______________
         Ссылка на сегменты             |Нет             |Ссылки допуска-
                                        |                |ются
         _______________________________|________________|_______________
         Стековый сегмент               |Не указывается  |Должен быть оп-
                                        |                |ределен
         _______________________________|________________|_______________
         Начало программного кода       |ORG в 100h      |ORG не требует-
                                        |                |ся
         _______________________________|________________|_______________
         Размер программы               |Менее 64 кбайт  |Может быть лю-
                                        |                |бого размера
         _______________________________|________________|_______________
         Адрес PSP находится            |Во всех регист- |В регистрах ES
                                        |рах             |и DS
         _______________________________|________________|_______________
         Блок начального распределения  |Вся память      |Размер может
                                        |                |быть изменен
         _______________________________|________________|_______________



                                      - 3-25 -
                             Загрузка файла типа .COM

             Начальные шаги,  предпринимаемые  при  загрузке  и выполнении
         программного файла типа .COM,  идентичны  шагам,  предпринимаемым
         при  загрузке  программного файла типа .EXE.  При установке "кон-
         текста" процесса MS-DOS сначала инициализирует блок среды,  выби-
         рая информацию либо из текущей среды системы (случай, принимаемый
         по умолчанию), или из среды, указываемой порождающим процессом.
             После установки  среды,  MS-DOS  распределяет блок памяти для
         программы.  Для программ типа .COM этот блок памяти занимает  всю
         оставшуюся память. Минимально требуемый размер равен размеру фай-
         ла программы типа.COM плюс память для PSP.  После получения блока
         памяти  MS-DOS  продолжает  строить сегмент  программого префикса
         для программы в начале блока памяти.  В этой  точке  используемый
         процесс загрузки заметно отличается от того, который используется
         с программой типа .EXE.
             Файл типа  .COM читается в память непосредственно выше PSP по
         смещению 100 (шестнадцатиричное значение) в блоке  памяти  и  без
         настройки. Все регистры сегмента инициализируются для адреса сег-
         мента PSP, указатель инструкции устанавливается в 100 (шестнадца-
         тиричное значение),  а указатель стека устанавливается в значение
         0FFFE (шестнадцатиричное значение) или ниже,  если имеется  менее
         64 Кбайт памяти, доступной процессу. (Минимальное значение указа-
         теля стека равно 0100 - шестнадцатиричное  значение).  Управление
         возвращается в процесс и программа .COM начинает выполнение.
             Некоторые программы .COM имеют неприятности при  функциониро-
         вании  из-за  минимального  стека,  обеспечиваемого MS-DOS.  Если
         программа выполняется при слишком маленьком стеке, то в результа-
         те  это  может привести к росту стека вниз в раздел программы или
         данных, что  непременно  приведет к фатальному окончанию програм-
         мы. Если программа .COM требует стек, больше минимального размера
         в 256 байтов,  то программист может  построить  свой  минимальный
         стек  памяти  в  образе  программы  путем резервирования большего
         пространства памяти в конце программы. (Запомните, что MS-DOS при
         загрузке  программы  типа .COM автоматически добавит для стека не
         менее 256 байт памяти).  Этот способ при  недостатке  памяти  для
         требуемого  стека не даст возможность MS-DOS загрузить программу.

                        Формат программного файла типа .EXE

             В отличие  от программного файла типа .COM,  который содержит
         только образ программы, файл программы типа .EXE должен содержать
         всю  необходимую информацию для настройки ссылок внутреннего сег-
         мента.  Также  в связи с тем, что в программе типа .EXE не запре-
         щено  иметь свой особый стек или особую начальную точку, програм-
         мный файл типа .EXE должен содержать информацию для загрузчика  с
         целью надлежащей инициализации программы.
             Файл программы типа .EXE состоит из трех  разделов: заголовка
         файла .EXE, таблицы настройки и образа программы. Заголовок файла
         .EXE показан в таблице 3-4.  Некоторые элементы в заголовке обес-
         печивают начальное состояние образа программы. Это: MinAlloc (ми-
         нимальное распределение), MaxAlloc (максимальное распределение) и
         начальные значения SS:SP и CS:IP.  Другие элементы: настраиваемые
         элементы и смещение таблицы настройки позволяют загрузчику  обес-
         печивать доступ к таблице настройки процесса.
             Каждый элемент в таблице настройки позволяет загрузчику раз-

                                      - 3-26 -
         решать ссылку  одного  сегмента  внутри образа программы.  Каждый
         элемент содержит указатель  длины  (сегмента  или  смещения)  для
         ссылки сегмента внутри образа загрузки. Указатель самого сегмента
         является относительным по отношению к началу образа загрузки.

                                                         Таблица 3-4
                      Заголовок программного файла типа .EXE
         ________________________________________________________________
          Шестнад-|
          цатирич-|
          ное сме-|                     Содержимое
           щение  |
         _________|______________________________________________________
             00   |Сигнатура. Маркер типа файла программы .EXE: 4D5H
                  |(шестнадцатиричное значение)
         _________|______________________________________________________
             02   |Остаток. Количество байтов на последней странице файла
                  |(размер образа загрузки модуля 512 байт)
         _________|______________________________________________________
             04   |Страницы. Количество 512-байтных страниц в файле,
                  |включая заголовок.
         _________|______________________________________________________
             06   |Элементы настройки. Количество элементов в таблице
                  |настройки.
         _________|______________________________________________________
             08   |Размер заголовка. Размер заголовка в 16-байтовых па-
                  |раграфах.
         _________|______________________________________________________
             0A   |Минимальное распределение (MinAlloc). Минимальное ко-
                  |личество параграфов памяти, требуемое после конца
                  |программы.
         _________|______________________________________________________
             0C   |Максимальное распределение (MaxAlloc). Максимальное
                  |количество параграфов памяти,  требуемое  после  конца
                  |программы.
         _________|______________________________________________________
             0E   |Стековый сегмент. Начальное значение для стекового
                  |сегмента (относительно начала образа загрузки програм-
                  |мы.
         _________|______________________________________________________
             10   |Указатель стека. Начальное значение указателя стека.
         _________|______________________________________________________
             12   |Контрольная сумма. Двоичное дополнение контрольной
                  |суммы программного файла.
         _________|______________________________________________________
             14   |Указатель инструкции. Начальное значение указателя
                  |инструкции.
         _________|______________________________________________________
             16   |Кодовый сегмент. Начальное значение кодового сегмента
                  |(относительно начала образа загрузки программы).
         _________|______________________________________________________
Предыдущая страница Следующая страница
1 ... 33 34 35 36 37 38 39  40 41 42 43 44 45 46 ... 198
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 

Реклама