Fix various immediate operands in x86-64 LAP generation.
authorTaylor R Campbell <campbell@mumble.net>
Mon, 2 Nov 2009 03:36:55 +0000 (22:36 -0500)
committerTaylor R Campbell <campbell@mumble.net>
Mon, 2 Nov 2009 03:36:55 +0000 (22:36 -0500)
commitd8ff03d384ed72a3520c311de6cd8807061eb458
tree8d53b1976d56141dbedd00293c2faf767228100d
parentd895e930494c1a20e11f3d4ab07c797ef4eb2164
Fix various immediate operands in x86-64 LAP generation.

Implement an abstraction for yielding an operand representing some
immediate value, either by yielding an actual immediate operand or by
loading an immediate into a temporary register with MOV (which takes
64-bit immediate operands, unlike every other instruction) and by
yielding a reference to the temporary register for the operand.

Use this to simplify LOAD-DISPLACED-REGISTER, and reduce the code it
generates.

Use more appropriate names for procedures that generate code to move
objects into registers (`load') and to move objects into memory
(`store').

Fix various other places that generate LAP with immediates to use the
new abstraction to ensure that they always fit in the relevant
instructions' operands.
src/compiler/machines/x86-64/lapgen.scm
src/compiler/machines/x86-64/rules1.scm
src/compiler/machines/x86-64/rules3.scm
src/compiler/machines/x86-64/rules4.scm