. MODEL (32bitový MASM)
Inicializuje model paměti programu. (Pouze 32bitová verze MASM.)
Syntaxe
. MODEL memory-model ⟦, language-type⟧ ⟦, stack-option⟧
Parametry
model paměti
Povinný parametr, který určuje velikost kódu a datových ukazatelů.
language-type
Volitelný parametr, který nastavuje konvence volání a pojmenování pro procedury a veřejné symboly.
stack-option
Volitelný parametr.
možnost zásobníku se nepoužívá, pokud je model paměti FLAT.
Určení NEARSTACK seskupí segment zásobníku do jednoho fyzického segmentu (DGROUP) spolu s daty. Předpokládá se, že registr segmentů zásobníku (SS) bude obsahovat stejnou adresu jako registr datového segmentu (DS). FARSTACK neskupuje zásobník s DGROUP, takže SS se nerovná DS.
Poznámky
. MODEL se v MASM pro platformu x64 (ml64.exe) nepoužívá.
Následující tabulka uvádí možné hodnoty jednotlivých parametrů při cílení na 16bitové a 32bitové platformy:
Parametr | 32bitové hodnoty | 16bitové hodnoty (podpora staršího 16bitového vývoje) |
---|---|---|
model paměti | BYT | TINY, SMALL, COMPACT, MEDIUM, LARGE, HUGE, FLAT |
language-type | C, STDCALL | C, BASIC, FORTRAN, PASCAL, SYSCALL, STDCALL |
stack-option | Nepoužívá se. | NEARSTACK, FARSTACK |
Kód
V případě ukázek souvisejících s MASM si stáhněte ukázky kompilátoru z ukázek Visual C++ a související dokumentace pro Visual Studio 2010.
Následující příklad ukazuje použití direktivy .MODEL
.
Příklad
; 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