Nicholas Clark wrote:
On Tue, Nov 26, 2002 at 09:55:00AM -0000, Leopold Toetsch wrote:Why can't it be mapped? Fundamental implementation constraints (using+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 +
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