Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.2 9/18/84 exptools; site ihuxn.UUCP
Path: utzoo!watmath!clyde!cbosgd!ihnp4!ihuxn!res
From: res@ihuxn.UUCP (Rich Strebendt)
Newsgroups: net.arch,net.micro.16k,net.micro.68k
Subject: Re: 24 bit vs. 32 bit address space
Message-ID: <989@ihuxn.UUCP>
Date: Thu, 7-Mar-85 19:40:14 EST
Article-I.D.: ihuxn.989
Posted: Thu Mar  7 19:40:14 1985
Date-Received: Mon, 11-Mar-85 11:07:13 EST
References: <983@watdcsu.UUCP> <2385@nsc.UUCP> <730@amdcad.UUCP>
Organization: AT&T Bell Laboratories
Lines: 41
Xref: watmath net.arch:932 net.micro.16k:253 net.micro.68k:638

> There are quite valid reasons for using the un-used top eight bits 
> on [ an address ].
> Two examples of why one would want to use the top eight bits of address:
>       1) A ROM monitor for the 68000 would like to intercept and print
>          a message for all 256 exeptions, identifying the exeption number.
>          This can be done by loading all vectors with the address of
>          the error handler with the exeption number in the top eight
>          bits. Without using this technique, 256 separate interrupt routines
>          occupying at least 1K of ROM would be required.
>       2) Using the top bits for type information can be VERY attractive
>          in a Lisp implementation. On machines without unused address
>          bits, this is often simulated by allocating all objects of one
>          type from one pool of memory (or various variations on this). 
>          The simulation isn't as good as really having unused address
>          bits however...
 
NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO !!!!!!!!!!!

Back in antiquity the IBM 360/67 used full 32-bit addresses.  Its less
endowed sibling, the IBM 360/65 used 24 bit addresses.  It became
desirable to port the PL/I compiler from the /65 to the /67.  It had
been VERY ATTRACTIVE to the PL/I compiler implementers to use the high
order byte for information because it obviously was not going to use
that byte for address.  Result: "24-bit addressing mode" on the /67 and
a hell of a lot of work for people to convert programs designed for 32
bit addressing (lots of virtual address space) to 24 bit addressing
(make sure the high order byte is cleared after instructions like
Translate and Test which behaved slightly differently in the two
different modes).

Soooooooo.  If a block of 32 bits is DEFINED as the size of the address
field for an instruction, regardless of how many are actually USED, 
keep your @*$$#@ fingers off of the unused bits.  As certainly as the
daily sunrise, someone will have to port that code to a version of the
machine in which those bits ARE used.  If you have been clever and were
seduced by the attraction of using those bits to spiffy up your
implementation, you can be certain that those who follow you will
loudly express unkind opinions about your ancestry.

					Rich Strebendt
					...!ihnp4!ihuxn!res