. MODEL (32-разрядная ВЕРСИЯ MASM)
Инициализирует модель памяти программы. (только 32-разрядная версия MASM.)
Синтаксис
. MODEL memory-model ⟦, language-type⟧ ⟦, stack-option⟧
Параметры
модель памяти
Обязательный параметр, который определяет размер кода и указателей данных.
тип языка
Необязательный параметр, который задает соглашения о вызовах и именовании для процедур и открытых символов.
параметр stack-option
Необязательный параметр.
Параметр stack-option не используется, если модель памяти не является плоской.
Указание NEARSTACK группировать сегмент стека в один физический сегмент (DGROUP) вместе с данными. Предполагается, что регистр сегмента стека (SS) содержит тот же адрес, что и регистр сегмента данных (DS). FARSTACK не группирует стек с DGROUP, поэтому службы SS не равны DS.
Замечания
. МОДЕЛЬ не используется в MASM для x64 (ml64.exe).
В следующей таблице перечислены возможные значения для каждого параметра при нацеливании на 16-разрядные и 32-разрядные платформы:
Параметр | 32-разрядные значения | 16-разрядные значения (поддержка более ранней разработки 16-разрядных приложений) |
---|---|---|
модель памяти | ПЛОСКИЙ | КРОШЕЧНЫЕ, МАЛЕНЬКИЕ, КОМПАКТНЫЕ, СРЕДНИЕ, БОЛЬШИЕ, ОГРОМНЫЕ, ПЛОСКИЕ |
тип языка | C, STDCALL | C, BASIC, FORTRAN, PASCAL, SYSCALL, STDCALL |
параметр stack-option | Не используется | NEARSTACK, FARSTACK |
Код
Для получения примеров, связанных с MASM, скачайте примеры компилятора на странице примеров кода на Visual C++ и связанной документации для Visual Studio 2010.
В следующем примере иллюстрируется использование директивы .MODEL
.
Пример
; file simple.asm
; For x86 (32-bit), assemble with debug information:
; ml -c -Zi simple.asm
; For x64 (64-bit), assemble with debug information:
; ml64 -c -DX64 -Zi simple.asm
;
; In this sample, the 'X64' define excludes source not used
; when targeting the x64 architecture
ifndef X64
.686p
.XMM
.model flat, C
endif
.data
; user data
.code
; user code
fxn PROC public
xor eax, eax ; zero function return value
ret
fxn ENDP
end