| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
всех виртуальных элементов.
Табличные типы данных представляют таблицы методов, исполь-
зуемые в объектно-ориентированном программировании. С объектом
связано обычно некоторое число методов, которые являются указате-
лями на процедуры, работающие с экземплярами объектов. Процедуры
методов могут либо вызываться непосредственно (статические мето-
ды), либо косвенно, через таблицу указателей процедур методов
(виртуальные методы).
Для описания табличного типа данных в режиме Ideal можно
использовать следующий синтаксис:
TABLE имя [элемент_таблицы [,элемент_таблицы...]]
Следующий синтаксис работает только в режиме MASM:
имя TABLE [элемент_таблицы [,элемент_таблицы...]]
Каждое поле "элемент_таблицы" имеет следующий синтаксис:
имя_таблицы
или
[VIRTUAL] имя_элемента [[выражение_счетчика_1]]
[: сложный_тип [:выражение_счетчика_2]] [=выражение]
где "имя_таблицы" - это имя существующего табличного типа данных,
элементы которого целиком встраиваются в определяемую вами табли-
цу. Прибегайте к данному синтаксису, если вы хотите использовать
наследование.
Турбо Ассемблер 3.0/tasm/#1-2 = 163 =
"Имя_элемента" - это имя элемента таблицы. Необязательное
ключевое слово VIRTUAL указывает, что элемент является виртуаль-
ным, и ему нужно присвоить смещение.
"Сложный_тип" может представлять собой любое допустимое вы-
ражение сложного типа. Описание допустимых типов выражений можно
найти в Главе 5.
Если вы не задается поле "сложный_тип", Турбо Ассемблер под-
разумевает, что это WORD (или DWORD, если текущей выбранной мо-
делью является 32-разрядная модель).
Поле "выражение_счетчик_2" задает, сколько элементов данного
типа определяется в таблице. Определение элемента таблицы:
foo TABLE VIRTUAL tmp:DWORD:4
определяет элемент таблицы с именем tmp, состоящий из 4 двойных
слов.
По умолчанию, если вы его не задаете, "выражение_счетчи-
ка_2" имеет значение 1. Поле "выражение_счетчика_1" - это коэффи-
циент размера элемента массива. Для элемента резервируется па-
мять, объем, которой определяется произведением "выражение_счет-
чик_2", длины, заданной полем "сложный_тип", и "выражения_счетчи-
ка_2". Если вы не задаете "выражение_счетчика_2", то по умолчанию
его значение равно 1. Общее число элементов таблицы определяется
произведением "выражение_счетчика_1" и "выражением_счетчика_2".
В режиме Ideal имена элементов таблицы являются локальными
для таблицы, а в режиме MASM имеют глобальную область действия.
Поле "имя" задает имя табличного типа данных. Позднее вы мо-
жете использовать его в модуле для получения информации о таблич-
ном типе данных. Для получения информации можно также использо-
вать имена отдельных элементов. Подробнее об этом рассказывается
в Главе 5.
Табличные типы данных являются переопределяемыми. В модуле
вы можете несколько раз определить табличный тип данных с одним и
тем же именем. Подробнее об этом рассказывается в Главе 12.
Кроме того, Турбо Ассемблер обеспечивает соответствующий
синтаксис для определений табличного типа данных, в которых ис-
пользуется несколько строк.
Этот синтаксис аналогичен синтаксису перечислимого типа дан-
ных. Приведем пример:
foo TABLE t1:WORD,t2:WORD,t3:WORD,t4:WORD ; исходная версия
foo TABLE { ; версия, использующая
t1:WORD, ; несколько строк
Турбо Ассемблер 3.0/tasm/#1-2 = 164 =
t2:WORD,
t3:WORD,
t4:WORD
}
foo TABLE t1:WORD,t2:WORD, { ; более компактная версия
t3:WORD,t4:WORD }
Турбо Ассемблер 3.0/tasm/#1-2 = 165 =
Переопределение элементов таблицы
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Если в одном и том же табличном типе вы описываете два или
более элементов с одинаковым именем, то Турбо Ассемблер будет
проверять их и анализировать, согласуются ли их размеры и типы.
Если это не так, то будет генерироваться ошибка. Турбо Ассемблер
будет использовать для элемента последнее начальное значение в
таблице. Таким образом, вы можете переопределить начальное значе-
ние таблицы поле того, как встроите ее в другую таблицу. Напри-
мер:
FOO TABLE VIRTUAL MEM1:WORD=MEM1PROC, VIRTUAL MEM2:WORD=MEM2PROC
FOO2 TABLE FOO, VIRTUAL MEM1:WORD=MEM3PROC ; переопределить
; наследуемый MEM1
Определение именованного типа
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Именованные типы представляют простые или сложные типы. Для
определения именованных типов вы можете использовать директиву
TYPEDEF. Приведем синтаксис режима Ideal.
TYPEDEF имя_типа сложный_тип
В режиме MASM синтаксис следующий:
имя_типа TYPEDEF сложный_тип
где "сложный_тип" описывает любой тип или указатель нескольких
уровней косвенности. Подробнее о сложных типах рассказывается в
Главе 5. "Имя_типа" определяет имя заданного типа.
Когда вы в выражении указываете названный тип, он действует
так же, как простой тип соответствующего размера. Например:
MOV ax, word ptr [bx] ; простой оператор
foo TYPESEF near ptr byte ; FOO - это слово
MOV ax, foo ptr [bx] ; поэтому это тоже работает
Определение объекта
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Объект содержит структуру данных и список соответствующих
объекту методов. Турбо Ассемблер используется для представления
связанной с объектом структуры структурный тип данных, а для
представления связанного с объектом списка методов - табличный
тип данных.
Определить объекты вам поможет директива STRUC. В режиме
Ideal используется следующий синтаксис:
STRUC имя [модификаторы] [имя_порождающего_объекта]
Турбо Ассемблер 3.0/tasm/#1-2 = 166 =
[METHOD [элемент_таблицы [,элемент_таблицы...]]]
элементы_структуры
ENDS [имя]
В режиме MASM используется следующий синтаксис:
имя STRUC [модификаторы] [имя_порождающего_объекта]
[METHOD [элемент_таблицы [,элемент_таблицы...]]]
элементы_структуры
ENDS [имя]
где "имя" - это имя объекта. "Имя_порождающего_объекта" - это не-
обязательное имя порождающего объекта. (Турбо Ассемблер явно под-
держивает только одиночное наследование.) Структура данных порож-
дающего объекта будет автоматически включаться в структуру данных
нового объекта, а таблица методов порождающего объекта - в табли-
цу методов нового объекта.
Каждое поле "элемент_таблицы" описывает имя метода и проце-
дуры метода, связанного с объектом. Синтаксис этого поля такой
же, как в определении таблицы.
Поле "элементы_структуры" описывает дополнительные элементы
структуры, которые вы хотите определить в структуре данных объек-
та. Они форматируются точно также, как в открытом определении
структуры.
Необязательное ключевое слово "модификаторы" может представ-
лять собой одно из следующих слов:
Турбо Ассемблер 3.0/tasm/#1-2 = 167 =
Разрешенные модификаторы Таблица 8.3
ЪДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Ключевое слово і Значение і
ГДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і GLOBAL і Приводит к тому, что адрес таблицы вир- і
і і туальных методов (если она имеется) бу- і
і і дет объявлен общедоступным. і
|
adfun.ru
|
|
|
|