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:

    Poetry, at all times, exercises two distinct functions: it may reveal, it may unveil to every eye, the ideal aspects of common things ... or it may actually add to the number of motives poetic and uncommon in themselves, by the imaginative creation of things that are ideal from their very birth.
    Walter Pater (1839–1894)