Related articles |
---|
SPARC tagged data horst@techfak.uni-bielefeld.de (1991-04-29) |
Re: SPARC tagged data eb%watergate@lucid.com (Eric Benson) (1991-04-30) |
Re: SPARC tagged data moss@cs.umass.edu (1991-04-30) |
Re: SPARC tagged data weitek!weaver@Sun.COM (1991-04-30) |
Re: SPARC tagged data kers@otter.hpl.hp.com (1991-05-07) |
Re: SPARC tagged data pardo@june.cs.washington.edu (1991-05-08) |
Re: SPARC tagged data henry@zoo.toronto.edu (1991-05-09) |
Re: SPARC tagged data pardo@june.cs.washington.edu (1991-05-10) |
Newsgroups: | comp.compilers |
From: | kers@otter.hpl.hp.com (Chris Dollin) |
In-Reply-To: | moss@cs.umass.edu's message of 30 Apr 91 12:32:34 GMT |
Keywords: | Lisp, design, optimize |
Organization: | Hewlett-Packard Laboratories, Bristol, UK. |
References: | <9104291542.AA11213@flora.techfak.uni-bielefeld.de> <MOSS.91Apr30083234@ibis.cs.umass.edu> |
Date: | 7 May 91 09:35:47 |
Eliot Moss says:
Well, I cannot speak for SPARC and say what the instructions were DESIGNED
for, but as the moderator pointed out, they can be used to good effect in
implementing languages such as Smalltalk and LISP, which used tagging to
distinguish (small, i.e., 30-bit) integers from pointers. One uses a tag of
00 in the low bits for integers, and a tag of 01 (say) for pointers. All
offsets from pointers are scaled by -1 to compensate for the 01 in the low
bits.
Doesn't this choice make inter-language working unnecessarily hard? It means
that structures containing pointers cannot be safely passed to (say) C
routines, because all the pointer values are wrong. (Structures that you
pass to foreign procedures need their numbers raw anyway.) Seems to me that
the fixnum tag should have been something other than 0.
Isn't it nice when hardware does *almost* what you want?
--
Regards, Kers.
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.