Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебн пособ по арх и прогр МП.doc
Скачиваний:
64
Добавлен:
10.12.2013
Размер:
1.59 Mб
Скачать

4.2.3. Директива model.

Директива MODELиспользуется в режиме IDEAL и позволяет задавать в программе одну из нескольких стандартных моделей сегментации. Синтаксис директивыMODEL:

МODEL [модификатор] модель_памяти [имя_кодового_сегмента]

[, [модификатор_языка] язык] [, модификатор]

В режиме Masmиспользуется тот же синтаксис, но с директивой .MODELПараметр модель_памяти может принимать одно из следующих значений:TINY(крошечная),SMALL(маленькая),MEDIUM(средняя),LARGE(большая),HUGE(огромная).

Модель

Код

Данные

Предполагаемые значения регистров

TINY

near

Near

CS=DGROUP

DS=SS=DGROUP

SMALL

near

Near

CS=_TEXT

DS=SS=DGROUP

MEDIUM

far

Near

CS=<имя_модуля>_TEXT

DS=SS=DGROUP

COMPACT

near

Far

CS=_TEXT

DS=SS=DGROUP

LARGE

far

Far

CS=<имя_модуля>_TEXT

DS=SS=DGROUP

HUGE

far

Far

CS=<имя_модуля>_TEXT

DS=SS=DGROUP

TCHUGE

far

Far

CS=<имя_модуля>_TEXT

DS=SS=NOTHING

TPASCAL

near

Far

CS=CODE

DS=DATA SS=NOTHING

FLAT

near

Near

CS=_TEXT

DS=SS=FLAT

Каждая модель_памяти предназначена для какого-то типа организации выполняемого файла:

TINY- код и данные объеденены в одну группуDGROUP. Эта модель используется для создания программ типа .COM. Во многих языках высокого уровня эта модель не поддерживается.

SMALL- код программы находится в одном сегменте. Все данные объеденены в группуDGROUP. Такая модель памяти чаще всего используется в программах, написанных на языках высокого уровня.

MEDIUM- код находится в нескольких сегментах, по одному на каждый программный модуль. Данные объеденены в группуDGROUP.

COMPACT- код находится в одном сегменте. Все данные имеют ближний тип и находятся в группеDGROUP. Для ссылки на данные из кода применяются указатели дальнего типа.

LARGE- код может размещаться в нескольких сегментах, на каждый модуль - новый сегмент. Все данные имеют ближний тип и находятся в группеDGROUP. Для ссылки на данные из кода применяются указатели дальнего типа.

HUGE- так же, как и для моделиLARGE, но возможностиTASMпо использованию всего объема памяти для размещения программы исполтзуются в полной мере.

TCHUGE- так же, как и для моделиLARGE, но с иным использованием сегментных регистров.

TRANSCAL- модель предназначена для поддержки ранних версийBorlandPascal. Для более поздних версий не используется.

FLAT- так же, как и для моделиSMALL, но для создания программ дляOS/2.

Необязательный параметр модификатор в объявлении директивы MODELпозволяет изменять некоторые черты указанной модели, причем при необходимости можно задавать несколько модификаторов. Ниже перечислены все доступные модификаторы:

NEARSTACK- указывает, что сегмент стека будет включен вDGROUP(еслиDGROUPприсутствует) иSSбудет указывать наDGROUP.

FARSTACK- сегмент стека не должен включаться вDGROUPиSSне будет инициализирован.

USE16- указывает (если выбран процессор 80386 или 80486), что все сегменты текущей модели должны использоваться как 16-битовые.

USE32- то же, как 32-битовые.

DOS,OS_DOS - указывает, что данная программа предназначена для использования вDOS.

OS2,OS_OS2- то же,OS/2.

По умолчанию TASMиспользует модификаторыNEARSTACK,DOSиUSE16(USE32, если выбран процессор 80386 или 80486).

Параметр имя_кодового_сегмента, который также является необязательным, может использоваться в модели LARGEи ей подобным для переопределении имени, назначенного кодовому сегменту по умолчанию (обычно это имя модуля с добавлением к нему _TEXT).

Параметры язык и модификатор_языка определяют соглашения для вызова процедур, а также стиль пролога и эпилога процедуры, они определяют, как представляются внешние имена для использования их компоновщиком. TASMавтоматически генерирует код входа и выхода из процедур в стиле одного из следующих языковых соглашений:PASCAL, C, CPP (C++), SYSCALL, STDCALL, BASIC, FORTRAN, PROLOG и NOLANGUAGE. Если язык не указан,TASMиспользуетNOLANGUAGE.

Параметр модификатор_языка указывает на необходимость добавить в код процедур специальные прологи и эпилоги при разработке программ для WINDOWSилиBorland Overlay Loader. Значениями этого параметра могут быть:NORMAL, WINDOWS, ODDNEAR и ODDFAR. По умолчанию установленNORMAL.