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