Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Keith Thompson Newsgroups: comp.arch Subject: Re: Keeping other stuff with addresses Date: Tue, 03 Dec 2024 17:43:15 -0800 Organization: None to speak of Lines: 29 Message-ID: <87wmggp6j0.fsf@nosuchdomain.example.com> References: <20241128185548.000031c9@yahoo.com> <2024Nov30.072829@mips.complang.tuwien.ac.at> MIME-Version: 1.0 Content-Type: text/plain Injection-Date: Wed, 04 Dec 2024 02:43:16 +0100 (CET) Injection-Info: dont-email.me; posting-host="535487b4219c47c49a2c0953cbda4f25"; logging-data="500732"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18TK9NP0dT26GA+wHJVLO8J" User-Agent: Gnus/5.13 (Gnus v5.13) Cancel-Lock: sha1:h7tYqLGjYhBh9hoRL01GAgee+ZQ= sha1:sYLnA/lNZF9kY4qXa8BeJ6M7Nek= Bytes: 2344 anton@mips.complang.tuwien.ac.at (Anton Ertl) writes: [...] > The technique of putting stuff in unused bits of an address has its > drawbacks, but it also has benefits, in particular type information is > often stored there (even on architectures that do not ignore any > bits). Of course AMD and Intel have the bad examples of S/360 and > 68000 in mind, and did not want to have anything to do with that > during the first two decades of AMD64. [...] One example of this that I haven't seen mentioned here is used by the C and C++ compilers for Cray vector machines (I've used the T90 and SV1). These systems had a 64-bit word size, and were heavily optimized for floating-point operations. Hardware addresses referred to 64-bit words. Compatibility with other systems required support for 8-bit bytes (CHAR_BIT==8). This was implemented in generated code by using the high-order 3 bits of an address as a byte offset. The fact that all byte addressing was implemented in software meant that, for example, string manipulation was remarkably slow -- but it worked. (I'm using the past tense because I don't know whether any of these systems are still in use.) -- Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com void Void(void) { Void(); } /* The recursive call of the void */