IS-DOS - "Формат таблицы локальных символов IS-DOS Ассемблера".

ZX Format #03
Рубрика "IS-DOS - программистам" No 3

            Прокопенко С. В.
        под ред. Елисеева В. А.

       "Формат таблицы локальных
      символов IS-DOS Ассемблера"
________________________________________

     В этой  статье  описывается  формат
таблицы локальных  символов,  генерируе-
мой IS-DOS Ассемблером в виде  временно-
го файла *.ltb

     Таблица локальных  символов  содер-
жит  локальные  символы-имена,  цифровые
локальные метки, определенные на  первом
проходе трансляции программы, и соответ-
ствующие им численные значения.

     Эта таблица-файл стирается по окон-
чании трансляции.

     Структура  таблицы  локальных
          символов ассемблера.

     Вся таблица состоит  из  непрерывно
расположенных записей, по 16 байт каждая.
     Каждая запись  содержит  информацию
либо об одном  локальном  символе-имени,
либо описывает одну или несколько цифро-
вых локальных меток (до  8  шт.)  Записи
локальных символов-имен связаны  друг  с
другом в бинарное дерево,  а  к  записям
цифровых  локальных  меток  можно   доб-
раться лишь через соответствующий  имен-
ной символ-метку, начинающую блок цифро-
вых локальных меток.

     Формат  одной  записи для символов-
имен следующий (см. табл. 1):

                           Таблица 1.
      Формат записи символов-имен.
----------------------------------------
  смещ.  длина          значение
----------------------------------------

 0,1    (2)    - ссылка на предидущую
                 запись
 2,3    (2)    - ссылка на следующую
                 запись
   4    (1)    - число знаков в
                 имени-символе (N)
   5    (N)    - знаки символа (символы)
 5+N    (1)    - тег (*) значения
                 символа
 6+N    (2)    - значение  символа
 8+N    (2)    - ссылка на блок циф-
                 ровых локальных меток
                 (если он есть) или зна-
                 чение программного
                 счетчика (для символов,
                 определенных через
                 EQU). В остальных слу-
                 чаях не определено
----------------------------------------

--------------
(*) Тег (англ. tag - ярлык, зтикетка)  -
часть элемента  данных  (один  или  нес-
колько разрядов слова), определяющая его
тип. (прим. ред.)
--------------

     Ссылки на блок  цифровых  локальных
символов могут быть 2-х типов:

 1.#NNFF (FF-младший байт)
     #FF-признак данного типа ссылки;
     NN-число цифровых локальных  симво-
     лов в блоке (1 байт);

     В случае такого  типа  ссылки  блок
ц.л.с. начинается прямо со следующей  16
байтовой записи и продолжается до конца.

 2.NNNN - смещение  относительно  начала
     файла *.ltb до блока ц.л.с.

     В случае такого  типа  ссылки  блок
ц.л.с. начинается по  смещению  NNNN  от
начала файла ц.л.с., и  в  начале  блока
ц.л.с. идут следующие 2 байта: #FF и да-
лее NN-число цифровых  локальных  симво-
лов в блоке. Далее подряд следуют ц.л.с.

     Один ц.л.с. занимает 2 байта.  Пер-
вый байт-номер ц.л.с., а  второй  -  его
значение (смещение  относительно  начала
блока ц.л.с.)

     Ц.л.с.  записываются в файл в  виде
16-байтовых записей.  Поэтому,  если  их
число в блоке не кратно 8, то  оставшая-
ся часть байтов последней  записи  блока
не используется. Новый блок ц.л.с. всег-
да  начинается в новой 16 байтовой запи-
си.
            ________________

    Еще раз напоминаем, что Ваши пожела-
ния  и замечания по всем материалам, ка-
сающимся IS-DOS  мы  всегда  будем  рады
выслушать по телефону 245-00-91 (с 10.00
до 16.00 по рабочим дням, спросить Прог-
раммный отдел), по этому же телефону  Вы
можете получить  оперативную  консульта-
цию по всем вопросам, касающимся  систе-
мы IS-DOS и прикладных  программ,  рабо-
тающих в ее среде.

Фирма "IskraSoft"
________________________________________