Re: Why are integer and FP registers separated?

Michael Meissner <meissner@cygnus.com>
Tue, 15 Aug 1995 15:55:49 GMT

          From comp.compilers

Related articles
Re: Why are integer and FP registers separated? stefan.monnier@epfl.ch (Stefan Monnier) (1995-08-11)
Re: Why are integer and FP registers separated? meissner@cygnus.com (Michael Meissner) (1995-08-14)
Re: Why are integer and FP registers separated? stefan.monnier@epfl.ch (Stefan Monnier) (1995-08-18)
Re: Why are integer and FP registers separated? meissner@cygnus.com (Michael Meissner) (1995-08-15)
| List of all articles for this month |

Newsgroups: comp.compilers
From: Michael Meissner <meissner@cygnus.com>
Keywords: architecture, optimize
Organization: Compilers Central
References: <199508141526.LAA20727@tiktok.cygnus.com> 95-08-104
Date: Tue, 15 Aug 1995 15:55:49 GMT

| > | Yes and no. Tags may not be required, but the compiler still has to
| > | make sure the GC also knows it's a float. Tagging is an easy way to
| > | tell the GC what's what. It is probably not the best
| > | performance-wise, but GC without tags is not easy.
| >
| > You could use implied tags, where floats are put in one set of pages,
| > cons are put in another set (I forget what the generic name for this
| > is -- Bag of Bits is what is coming to mind).
|
| You probably mean BIBOP ("BIg Bags Of Pages" or somesuch)


Yep.


| PS: it's definitely a possibility, but it means you need a pointer to the
| float. The main problem was to find a scheme that allows to deal with
| immediate floats. BIBOP is actually a tagging scheme that tags some bits
| of your pointer, just like using the lower 2 bits. I'm not saying it's a bad
| scheme (all tagging scheme are highly dependent on the specific case) but it's
| not a solution to the "current" problem.


Most architectures don't put immediate fp constants in the instruction
anyway (of the machines I've worked on, the ns32k is the only that
comes to mind that does). The compiler puts the constant in
initialized memory somewhere, and builds the address, and does a load
floating operation. On object files such as ELF that allow you to
create multiple sections (or even a.out by putting the constants in
the .text section), you put the constants in a read-only section, and
the garbage collector doesn't bother garbage collecting such
sections. String literals can be handled the same way....


--
Michael Meissner, Cygnus Support (East Coast)
Suite 105, 48 Grove Street, Somerville, MA 02144, USA
meissner@cygnus.com, 617-629-3016 (office), 617-629-3010 (fax)


--


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.