next up previous
Next: Basic Data Stack-Related Instructions Up: Example Programming Language Previous: Data Structures on Tapes


Primitive Instructions

Most of the 61 tokens below do not appear in the solutions found by OOPS in the experiments (Section 6). Still, we list all of them for completeness' sake, and to provide at least one example way of seeding OOPS with an initial set of behaviors. In the following subsections, any instruction of the form inst ( $x_1, \ldots, x_n$) expects its $n$ arguments on top of data stack ds, and replaces them by its return values, adjusting dp accordingly -- the form inst() is used for instructions without arguments.

Illegal use of any instruction will cause the currently considered program prefix to halt. In particular, it is illegal to set variables (such as stack pointers or instruction pointers) to values outside their prewired given ranges, or to pop empty stacks, or to divide by zero, or to call a nonexistent function, etc.

Since CPU time measurements on our PCs turned out to be unreliable, we defined our own, rather realistic time scales. By definition, most instructions listed below cost exactly 1 unit time step. Some, however, consume more time: Instructions making copies of strings with length $n$ (such as cpn(n)) cost $n$ time steps; so do instructions (such as find(x)) accessing an a priori unknown number $n$ of tape cells; so do instructions (such as boostq(k)) modifying the probabilities of an a priori unknown number $n$ of instructions.



Subsections
next up previous
Next: Basic Data Stack-Related Instructions Up: Example Programming Language Previous: Data Structures on Tapes
Juergen Schmidhuber 2004-04-15

Back to OOPS main page