Threaded Code - Common Amenities

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 ; next

This is perhaps the simplest and fastest interpreter or virtual machine.

Read more about this topic:  Threaded Code

Famous quotes containing the word common:

    There ought to be an absolute dictatorship ... a dictatorship of painters ... a dictatorship of one painter ... to suppress all those who have betrayed us, to suppress the cheaters, to suppress the tricks, to suppress mannerisms, to suppress charms, to suppress history, to suppress a heap of other things. But common sense always gets away with it. Above all, let’s have a revolution against that!
    Pablo Picasso (1881–1973)