mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-02 02:10:19 +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:
parent
7c7908c97e
commit
708cca9465
3 changed files with 24 additions and 11 deletions
|
@ -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>
|
2013-01-30 Paulo Andrade <pcpa@gnu.org>
|
||||||
|
|
||||||
* lib/jit_x86-cpu.c: Correct undefined behavior code.
|
* lib/jit_x86-cpu.c: Correct undefined behavior code.
|
||||||
|
|
16
TODO
16
TODO
|
@ -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.
|
* Update documentation to match new implementation.
|
||||||
|
|
||||||
* Make an sparc port to not remove previous functionality.
|
* 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.
|
||||||
|
|
|
@ -488,7 +488,8 @@ callr (not specified) @r{function call to a register}
|
||||||
calli (not specified) @r{function call to O1}
|
calli (not specified) @r{function call to O1}
|
||||||
finishr (not specified) @r{function call to a register}
|
finishr (not specified) @r{function call to a register}
|
||||||
finishi (not specified) @r{function call to O1}
|
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}
|
ret (not specified) @r{return from subroutine}
|
||||||
retr _c _uc _s _us _i _ui _l _f _d
|
retr _c _uc _s _us _i _ui _l _f _d
|
||||||
reti _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.
|
receive a label argument, so they must be patched.
|
||||||
|
|
||||||
You need to call @code{patch_at} on the return of value @code{calli},
|
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
|
@code{finishi}, and @code{calli} if it is actually referencing a label
|
||||||
referencing a label in the jit code. All other branch instructions
|
in the jit code. All branch instructions do not receive a label
|
||||||
do not receive a label argument. Note that @code{movi} is an special
|
argument. Note that @code{movi} is an special case, and patching it
|
||||||
case, and patching it is usually done to get the final address of
|
is usually done to get the final address of a label, usually to later
|
||||||
a label, usually to later call @code{jmpr}.
|
call @code{jmpr}.
|
||||||
|
|
||||||
Now, here is the iterative version:
|
Now, here is the iterative version:
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue