Path: utzoo!attcan!uunet!lll-winken!lll-lcc!ames!nrl-cmf!mailrus!umix!umich!mibte!gamma!ulysses!andante!alice!tve From: tve@alice.UUCP Newsgroups: comp.arch Subject: Re: negative addresses Message-ID: <7863@alice.UUCP> Date: 10 May 88 22:24:26 GMT References: <2393@uvacs.CS.VIRGINIA.EDU> Organization: AT&T Bell Laboratories, Murray Hill NJ Lines: 28 In article <2393@uvacs.CS.VIRGINIA.EDU>, wulf@uvacs.UUCP writes: > Has anyone ever seen a machine with "negative addresses", that is, one > where the address space is -2**31..2**31-1 rather than 0..2*32-1?? Is it a hardware or a software issue? If you use physical addressing and your memory starts at zero, it is a board hardware issue. If you use virtual memory, it's the way the software sets up the process and the MMU. I think, having negative addresses is mainly a software issue, namely having process code and static data start at -2**31 and stack start at 2**31 (going down) (It's not exactly these numbers, but it's the general idea). The main hardware obstacle I see, is "short addressing". You might be interested in the fact, that the 680x0 _sign_ extends short addresses, which is exactly what you want for your negative address scheme (as opposed to _zero_ extension). In fact, I seem to remember, that the 68000 manual says the address range for short adresses (16 bits) is -2**16..2**16. So take a 680x0 and try your kernel and compiler! If you have the overflow/condition-code bits sorted out, your main problem will be convincing users (and ported programs) to understand the negative addresses! Thorsten von Eicken research!tve or tve@research.att.com AT&T Bell Laboratories Murray Hill, NJ