Common Amenities
Separating the data and return stacks in a machine eliminates a great deal of stack management code, substantially reducing the size of the threaded code. The dual-stack principle was originated three times independently: for Burroughs large systems, Forth and PostScript, and is used in some Java virtual machines.
Three registers are often present in a threaded virtual machine. Another one exists for passing data between subroutines ('words'). These are:
- ip or i (instruction pointer) of the virtual machine (not to be confused with the program counter of the underlying hardware implementing the VM)
- w (work pointer)
- rp or r (return stack pointer)
- sp or s (parameter stack pointer for passing parameters between words)
Often, threaded virtual machines such as implementations of Forth have a simple virtual machine at heart, consisting of three primitives. Those are:
- nest, also called docol
- unnest, or semi_s (;s)
- next
In an indirect-threaded virtual machine, the one given here, the operations are:
next: (ip)+ -> w ; jmp (w)+ nest: ip -> -(rp) ; w -> ip ; next unnest: (rp)+ -> ip ; nextThis is perhaps the simplest and fastest interpreter or virtual machine.
Read more about this topic: Threaded Code
Famous quotes containing the word common:
“If music in general is an imitation of history, opera in particular is an imitation of human willfulness; it is rooted in the fact that we not only have feelings but insist upon having them at whatever cost to ourselves.... The quality common to all the great operatic roles, e.g., Don Giovanni, Norma, Lucia, Tristan, Isolde, Brünnhilde, is that each of them is a passionate and willful state of being. In real life they would all be bores, even Don Giovanni.”
—W.H. (Wystan Hugh)