[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Floats in self.

I have just been re-reading the OOPSLA'89 paper on Self and in section
3.3 it says that floats are immediates with a tag of (binary) 10 in
the least significant two bits.

I was wondering what happens when a float is tagged.  Is the mantissa
truncated and then tagged:
	float x = ...
	tagged_x = ((unsigned) x & ~0x3) | 0x2;

or is the mantissa rounded so that it only uses the 21 bits
and then tagged:

	tagged_x = round_to_21(x) | 0x2;

or does something else happen?

How about un-tagging, what happens then?