version 1.31, 2007/12/31 19:02:25
|
version 1.33, 2008/10/08 20:54:09
|
Line 331 instructions. Another option is to use
|
Line 331 instructions. Another option is to use
|
for the virtual machine; we believe that using a stack architecture is |
for the virtual machine; we believe that using a stack architecture is |
usually both simpler and faster. |
usually both simpler and faster. |
|
|
however, this option is slower or |
However, this option is slower or |
significantly more complex to implement than a stack machine architecture. |
significantly more complex to implement than a stack machine architecture. |
|
|
Vmgen has special support and optimizations for stack VMs, making their |
Vmgen has special support and optimizations for stack VMs, making their |
Line 860 first one (just as the intuition suggest
|
Line 860 first one (just as the intuition suggest
|
@cindex Stack pointer access |
@cindex Stack pointer access |
@cindex explicit stack access |
@cindex explicit stack access |
|
|
|
This feature is not needed and not supported in the 0.6.2 version of |
|
vmgen that is documented here (and that is invoked by default). |
|
|
Not all stack effects can be specified using the stack effect |
Not all stack effects can be specified using the stack effect |
specifications above. For VM instructions that have other stack |
specifications above. For VM instructions that have other stack |
effects, you can specify them explicitly by accessing the stack |
effects, you can specify them explicitly by accessing the stack |
Line 963 if (branch_condition) @{
|
Line 966 if (branch_condition) @{
|
SUPER_CONTINUE; |
SUPER_CONTINUE; |
@end example |
@end example |
|
|
@item VM_JUMP |
@c !! uncomment for post-0.6.2 docs |
@findex VM_JUMP |
@c @item VM_JUMP |
@code{VM_JUMP(target)} is equivalent to @code{goto *(target)}, but |
@c @findex VM_JUMP |
allows Vmgen to do dynamic superinstructions and replication. You |
@c @code{VM_JUMP(target)} is equivalent to @code{goto *(target)}, but |
still need to say @code{SUPER_END}. Also, the goto only happens at |
@c allows Vmgen to do dynamic superinstructions and replication. You |
the end (wherever the VM_JUMP is). Essentially, this just suppresses |
@c still need to say @code{SUPER_END}. Also, the goto only happens at |
much of the ordinary dispatch mechanism. |
@c the end (wherever the VM_JUMP is). Essentially, this just suppresses |
|
@c much of the ordinary dispatch mechanism. |
|
|
@end table |
@end table |
|
|
Line 1141 optimizer for both variations, so leave
|
Line 1145 optimizer for both variations, so leave
|
@cindex stack stores, optimization |
@cindex stack stores, optimization |
@cindex eliminating stack stores |
@cindex eliminating stack stores |
|
|
This minor optimization (0.6\%--0.8\% reduction in executed instructions |
This minor optimization (0.6%--0.8% reduction in executed instructions |
for Gforth) puts additional requirements on the instruction descriptions |
for Gforth) puts additional requirements on the instruction descriptions |
and is therefore disabled by default. |
and is therefore disabled by default. |
|
|