Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

65 lines
1.3 KiB

;***
;mm.inc - macros to write memory model dependent code
;
; Copyright (c) 1987-1998 Microsoft Corporation
;
;Purpose:
; This file contains definitions of a number of macros which
; make the writing of memory model dependent code for the
; 8086 a little easier and more portable.
;
;*******************************************************************************
; the macro below is used by the assigning long arithmetic routines (almul,
; etc) to handle the model dependent data addressing - in small and middle
; models data addresses default to short (2 byte) addresses. in large model,
; data address are long (4 bytes).
LOAD macro to,from
if sizeD
lds to,from
else
mov to,from
endif
endm
; general code & data size constants & macros
if sizeD ; 4 byte data addresses
DAT_ADDR_SZ = 4
BDAT_ADDR_SZ = 2
else ; 2 byte data addresses
DAT_ADDR_SZ = 2
BDAT_ADDR_SZ = 4
endif
if sizeC ; 4 byte code addresses
TXT_ADDR_SZ = 4
else ; 2 byte code addresses
TXT_ADDR_SZ = 2
endif
; Big/Little Endian Definitions for Long Integers
LOWORD equ [0]
HIWORD equ [2]
; All Model Definitions
BPARGBAS equ TXT_ADDR_SZ+2 ; offset from BP to first argument
; macro for windows fixup with retf #
return macro n
org $-1
if sizeC
db 0cah
else
db 0c2h
endif
dw n
endm