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