adfun.ru
| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
ввиде таблицы, где dx' и dy' это смещения в Z,
байтов, имеющих смещения в Х и Y, соответственно dx
и dy:
______________________________________________________
С LZ dx' dy'
______________________________________________________
2 LX+LY+G dx dy+LX+G "Public"
5 LX+LY+G dx dy+LX+G "Stack"
6 MXY dx dy "Common"
______________________________________________________
Если С=0, то перемещаемый ЛСЕГ не может сочетаться.
Значения 1 и 3 не определены. С=4 и С=7 тоже самое,
что и С=2.
Бит В при установке в единицу означает, что длина
сегмента точно 64К (65536), при этом поле Segment
length должно содержать ноль.
Бит Р всегда равен нулю.
- Поля Frame number и Offset (номер фрагмента и
смещение) предназначены только лишь для указания
адреса абсолютного сегмента в MAS (А=0). Величина
смещения может принимать значения от 0 до 15
включительно. Если значение смещения превышает 15,
то необходимо увеличить номер фрагмента.
б) segment length
Это поле содержит длину сегмента в байтах. Длина
может равняться нулю. В этом случае сегмент не
удаляется из модуля, т.к. для указания длины
сегмента, равной 64К, вы должны использовать бит В
поля АСВР в поле segment attr, а описываемое поле
сбросить в ноль.
в) segment name index
Имя сегмента это имя, которое программист или
транслятор присваивает сегменту, например, code,
data, modulename-code, taxdata или stack. Описываемое
поле содержит индекс имени сегмента, т.е. указывает
имя сегмента его индексом в списке имен записи
LNAMES.
г) class name index
Имя класса это имя, которое программист или
транслятор присваивает сегменту. Если таковое не
присвоено, то его длина равна нулю. Имя класса дает
программисту "рычаг" управления построением сегментов
в MAS, например, red, white, blue; или rom, fastram,
displayram. Описываемое поле содержит индекс имени
класса, т.е. указывает имя класса его индексом в
списке имен записи LNAMES.
д) overlay name index
Имя наложения это имя, которое транслятор и/или
сборщик присваивает, по указанию программиста,
сегменту. Длина этого имени может равняться нулю.
Описываемое поле содержит индекс имени наложения,
т.е. указывает имя наложения его индексом в списке
имен записи LNAMES.
________________________________________________________
Примечание
Сборщики Microsoft версий 3.00 и позже
игнорируют имя наложения. Это имя принимается
во внимание стандартным сборщиком MS-DOS.
________________________________________________________
7.5.6. Запись определения группы (GRPDEF)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ЪДДДДДВДДДДДДДДДДДВДДД///ДДДДДВДДДДД///ДДДДДДВДДДДДї
і rec і record і group і group і chk і
і typ і length і name і component і sum і
і 9AH і і index і descriptor і і
АДДДДДБДДДДДДДДДДДБДДД///ДДДДДЕДДДДД///ДДДДДДЕДДДДДЩ
АДДДrptДДДДДДДДЩ
а) group name index
Сборщик может обращаться к группе ЛСЕГ по имени
группы. Кроме того, всегда существует фрагмент,
который покрывает в MAS все ЛСЕГ группы. Описываемое
поле содержит индекс имени группы, т.е. указывает имя
группы его индексом в списке имен записи LNAMES.
б) group component descriptor
Это повторяющееся поле (описатель компонента группы)
имеет следующий формат:
ЪДДДДДВДДДДДД///ДДДДДДї
і FFH і segment index і
АДДДДДБДДДДДД///ДДДДДДЩ
Первый байт поля равен 0FFH. Поле segment index (индекс
сегмента) указывает ЛСЕГ, описываемый в одной из
предыдущих записей SEGDEF.
7.5.7. Запись определения имен 'public' (PUBDEF)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ЪДДДВДДДДДДДДВДДД///ДДВДД///ДДДВДДДДДДДДВДД///ДДВДДДї
іrecі record і public і public і public і type іchkі
іtypі length і base і name і offset і index іsumі
і90Hі і і і і і і
АДДДБДДДДДДДДБДДД///ДДЕДД///ДДДБДДДДДДДДБДД///ДДЕДДДЩ
АДДДДДДДДДДДДrptДДДДДДДДДДЩ
Запись PUBDEF содержит список имен 'public'. Для каждого
имени приводится три вида данных: (1) значение базы для
имени, (2) значение смещения для имени и (3) тип имени.
(1) public base
Это поле имеет следующий формат:
ЪДДД///ДДВДДД///ДДДВДДДДДДДДДї
і group і segment і frame і
і index і index і number і
АДДД///ДДБДДД///ДДДЕДДДДДДДДДґ
АДДДcondДДЩ
Формат поля group index был описан ранее и содержит
значение от 0 до 32767, включительно. Его ненулевое
значение ассоциирует группу с именем, имеющим атрибут
'public', и используется, как указано в Разделе 7.3
для случая (F2c). Нулевое значение индекса означает
отсутствие ассоциируемой группы. Формат поля segment
index был описан ранее и содержит значение от 0 до
32767, включительно. Ненулевое значение индекса
указывает (выбирает) ЛСЕГ. В этом случае поле public
offset (смещение имени 'public') содержит смещение
имени, указанного в поле public name (имя 'public'),
относительно первого байта выбранного ЛСЕГ, при этом
поле frame number (номер фрагмента) отсутствует.
Нулевое значение индекса означает, что имена имеют
абсолютные адреса в памяти. В этом случае индекс
группы игнорируется, при этом поле frame number
содержит номер фрагмента, а поле public offset
смещение. Ненулевое значение индекса группы выбирает
группу. Эта группа рассматривается, как "фрагмент"
для обращений ко всем именам 'public', определенным в
этой записи. Сборщик выполняет следующие действия:
- Любую привязку следующей формы:
Цель: EI(имя_'public')
Фрагмент: цель
сборщик преобразует в форму:
Цель: SI(имя_сегмента),смещение
Фрагмент: GI(имя_группы)
Имя сегмента указывается индексом сегмента, а
смещение полем public offset.
- Когда сборщик преобразовывает имя 'public',
используя значения полей segment index, public
offset и возможно frame number, в пару
{база:смещение}, то база из этой пары это база
указанной группы.
Нулевое значение индекса группы не выбирает никакой
группы. В качестве базы берется канонический фрагмент
сегмента (ЛСЕГ или ФСЕГ), указываемого индексом
сегмента.
Поле public name (имя с атрибутом 'public') должно
содержать соответствующее имя, длиной в один или
несколько символов.
(2) public offset
Это поле содержит смещение (16 бит) имени 'public'
относительно ЛСЕГ (если индекс сегмента больше
нуля) или указанного фрагмента (если индекс сегмента
равен нулю).
(3) type index
Это поле (индекс типа) идентифицирует единственную
предшествующую запись TYPDEF (Запись определения типа),
которая содержит описание типа объекта, представленного
именем 'public'. Сборщик игнорирует это поле.
7.5.8. Запись определения имен 'communal' (COMDEF)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ЪДДДВДДДДДДДДВДДД///ДДДДВДД///ДДДВДДДДДДДДДВДДДДДДДДДДВДДДї
іrecі record і communal і type і data і communal іchkі
|
adfun.ru
|
|
|
|