Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: $Revision: 1.6.2.16 $; site ima.UUCP
Path: utzoo!linus!philabs!cmcl2!seismo!harvard!think!ima!johnl
From: johnl@ima.UUCP
Newsgroups: net.micro
Subject: Re: Re: Small, Medium and Large Models
Message-ID: <97800002@ima.UUCP>
Date: Tue, 6-Aug-85 17:44:00 EDT
Article-I.D.: ima.97800002
Posted: Tue Aug  6 17:44:00 1985
Date-Received: Sat, 10-Aug-85 05:04:35 EDT
References: <411@kontron.UUCP>
Lines: 28
Nf-ID: #R:kontron:-41100:ima:97800002:000:1093
Nf-From: ima!johnl    Aug  6 17:44:00 1985


There shouldn't be much mystery about the 8086 and 8088 addressing models,
so here they are (at least as my friends and I understand them.)

Tiny:  Code and data share one 64K segment.  Can be made into .COM file.

Small:  Code and data each in a 64K segment.  Can sometimes be made into
	a .COM file.

Medium:  Multiple code segments, one 64K data segment.

Compact:  One code segment, multiple data segments, each no greater than 64K.

Large:  Multiple code and data segments, each no greater than 64K.

Huge:  Multiple code segments, simulate linear data addressing so it looks
	like one 1MB data segment.

With most compilers, generated code will be fastest for tiny model, and
slower for each other model in order.  The penalty for multiple code segments
is much less than that for multiple data segments, and the penalty for huge
model code is, well, huge.

Also, CP/M-86 only loads .COM files, so medium and above models do not work.
MS-DOS can load any of them, as can Xenix.  PC/IX is medium model only.
I don't know about the various Intel operating systems.

John Levine, ima!johnl