1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-31 17:30:24 +02:00

Correct description of the jmpi instruction.

* doc/body.texi: Correct "jmpi" description that incorrectly
	told it was possible to pass any address as jump target. The
	only way to do that is "movi+jmpr".
This commit is contained in:
pcpa 2013-01-30 18:11:43 -02:00
parent 7c7908c97e
commit 708cca9465
3 changed files with 24 additions and 11 deletions

View file

@ -1,3 +1,9 @@
2013-01-30 Paulo Andrade <pcpa@gnu.org>
* doc/body.texi: Correct "jmpi" description that incorrectly
told it was possible to pass any address as jump target. The
only way to do that is "movi+jmpr".
2013-01-30 Paulo Andrade <pcpa@gnu.org>
* lib/jit_x86-cpu.c: Correct undefined behavior code.

16
TODO
View file

@ -1,8 +1,14 @@
* Remove JIT_RET and JIT_FRET. Only interface to these should
be jit_retval, jit_retval_f and jit_retval_d, otherwise one
may use JIT_RET and/or JIT_FRET as argument to other jit calls,
what may cause problems at least on the arm backend.
* Update documentation to match new implementation.
* Make an sparc port to not remove previous functionality.
* Add two new base instructions to help dynamically typed
languages, that use two result registers and two argument
registers, implementing multiplication and quotient+remainder
return from division. Alternatively, can add branch codes
for multiplication that overflows (and reverse for no
overflow) and division with zero remainder or non zero
remainder.
Suggested names for now are "qmul" and "qdiv", with "r"
and "i" variants, and possibly unsigned version. Branches
would use "bo" and "bx" prefix.

View file

@ -488,7 +488,8 @@ callr (not specified) @r{function call to a register}
calli (not specified) @r{function call to O1}
finishr (not specified) @r{function call to a register}
finishi (not specified) @r{function call to O1}
jmpi/jmpr (not specified) @r{unconditional jump to O1}
jmpr (not specified) @r{unconditional jump to register}
jmpi (not specified) @r{unconditional jump}
ret (not specified) @r{return from subroutine}
retr _c _uc _s _us _i _ui _l _f _d
reti _c _uc _s _us _i _ui _l _f _d
@ -1067,11 +1068,11 @@ a pointer to a C function. Note that conditional branches do not
receive a label argument, so they must be patched.
You need to call @code{patch_at} on the return of value @code{calli},
@code{finishi}, @code{jmpi} and @code{calli} if it is actually
referencing a label in the jit code. All other branch instructions
do not receive a label argument. Note that @code{movi} is an special
case, and patching it is usually done to get the final address of
a label, usually to later call @code{jmpr}.
@code{finishi}, and @code{calli} if it is actually referencing a label
in the jit code. All branch instructions do not receive a label
argument. Note that @code{movi} is an special case, and patching it
is usually done to get the final address of a label, usually to later
call @code{jmpr}.
Now, here is the iterative version: