Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Random-access machine
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
===Creating "convenience instructions" from the base sets=== The three base sets 1, 2, or 3 above are equivalent in the sense that one can create the instructions of one set using the instructions of another set (an interesting exercise: a hint from Minsky (1967){{spaced ndash}}declare a reserved register e.g. call it "0" (or Z for "zero" or E for "erase") to contain the number 0). The choice of model will depend on which an author finds easiest to use in a demonstration, or a proof, etc. Moreover, from base sets 1, 2, or 3 we can create ''any'' of the [[primitive recursive function]]s ( cf Minsky (1967), Boolos-Burgess-Jeffrey (2002) ). (How to cast the net wider to capture the ''total'' and ''partial'' [[mu recursive function]]s will be discussed in context of indirect addressing). However, building the primitive recursive functions is difficult because the instruction sets are so ... primitive (tiny). One solution is to expand a particular set with "convenience instructions" from another set: :''These will not be subroutines in the conventional sense but rather ''blocks'' of instructions created from the base set and given a mnemonic. In a formal sense, to use these blocks we need to either (i) "expand" them into their base-instruction equivalents{{spaced ndash}}they will require the use of temporary or "auxiliary" registers so the model must take this into account, or (ii) design our machines/models with the instructions 'built in'.'' :Example: Base set 1. To create CLR (r) use the block of instructions to count down register r to zero. Observe the use of the hint mentioned above: :* CLR (r) =<sub>equiv</sub> :* ''loop'': JZ (r, ''exit'') ::* DEC (r) ::* JZ (0, ''loop'') :* ''exit'': etc. Again, all of this is for convenience only; none of this increases the model's intrinsic power. For example: the most expanded set would include each unique instruction from the three sets, plus unconditional jump J (z) i.e.: * { CLR (r), DEC (r), INC (r), CPY ( r<sub>s</sub>, r<sub>d</sub> ), JZ (r, z), JE ( r<sub>j</sub>, r<sub>k</sub>, z ), J(z) } Most authors pick one or the other of the conditional jumps, e.g. Shepherdson-Sturgis (1963) use the above set minus JE (to be perfectly accurate they use JNZ{{spaced ndash}}Jump if ''Not'' Zero in place of JZ; yet another possible convenience instruction).
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)