On 3/2/07, Naveen Neelakantam <[EMAIL PROTECTED]> wrote:
Is anyone planning on writing a document describing how tau operands
are used? It has taken me a lot of time digging through the code to
try to understand it (and my understanding is probably still
incomplete).
Here is a paper by the ORP starjit developers on design philosophy.
http://www.cs.cmu.edu/~leaf/publications/starjit/menon-starjit.pdf
Thanks,
xiaofeng
It would be good to save other people from some of the pain. :-)
Naveen
On Mar 1, 2007, at 5:46 AM, Egor Pasko wrote:
> On the 0x28C day of Apache Harmony Estelle Liu wrote:
>> hi,
>> there are some tau instructions of HIR such as Op_TauDiv and
>> Op_TauLdInd,
>> what do they stand for?
>> How can I get descriptions about HIR instructions?
>
> Estelle,
>
> there is no complete reference guide for HIR instructions yet. How do
> we tell what operations' semantics are? The
> jitrino/src/optimizer/Opcode.cpp file helps. For example:
>
> description:
> { Op_TauDiv, false, MB::Movable,
> MK::Signed_and_Strict, "div ", "div%
> m %0,%1 ((%2)) -) %l", }, // (opnds must already be
> checked for 0/overflow)
>
> "div" says it is division. On printing it tells about 3 source
> operands (%0, %1, %2) and one destination operand (%l). Operand ((%2))
> is a "tau-operand" (because in double-brachets) that comes from
> instruction performing a zero-check (with this tau-operand we ensure
> that zero-check is performed before the actual division).
>
> description2:
> { Op_TauLdInd, false, MB::Load,
> MK::AutoCompress_Speculative, "ldind", "ldind%
> m:%t [%0] ((%1,%2)) -) %l", },
>
> This is an indirect load from memory :)
> Checked with two tau operands (null-check and bounds-check, AFAIR)
>
> --
> Egor Pasko
>