Nicholas Clark wrote:

On Tue, Nov 26, 2002 at 09:55:00AM -0000, Leopold Toetsch wrote:


 +B<MAP[n]>
 +
 +The I<n>th integer or floating processor register, mapped in this section.
 +
 +Note: The register with the physical number zero can not be mapped.
 +
 +=begin unimp
 +

Why can't it be mapped? Fundamental implementation constraints (using
zero to flag something else?)

Yep. The test for a mapped register:

if (MAP[1]) is the problem: this translate to jit_info->optimizer->map_branch[jit_info->op_i + 1]
where map_branch is the {int,float}val_map at the end of jit_emit.h i.e. the register list.

... This will impact performance, although
whether it's not actually measurable, slight, or moderate, I don't know.

Either we fix this, or the registers have to be renumbered, so that reg #0 is not used. The emit_code for registers could take care of this.

Currently no architecture has this problem, register #0 is used as scratch register.

i386 uses register numbers 1 higher then actual, though EAX nether gets mapped.


["patches welcome"?]

Always, but as currently no architecture is concerned ...


Nicholas Clark

leo



Reply via email to