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
One-instruction set computer
(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!
== Machine architecture == In a [[Turing completeness|Turing-complete model]], each memory location can store an arbitrary integer, and{{snd}}depending on the mode, there may be arbitrarily many locations. The instructions themselves reside in memory as a sequence of such integers. There exists a class of [[universal computer]]s with a single instruction based on bit manipulation such as [[bit copying]] or [[bit inversion]]. Since their memory model is finite, as is the memory structure used in real computers, those bit manipulation machines are equivalent to real computers rather than to Turing machines.<ref name="mazonka">Oleg Mazonka, [http://www.complex-systems.com/pdf/19-3-5.pdf "Bit Copying: The Ultimate Computational Simplicity"], Complex Systems Journal 2011, Vol 19, N3, pp. 263β285</ref> Currently known OISCs can be roughly separated into three broad categories: * Bit-manipulating machines * Transport triggered architecture machines * Arithmetic-based Turing-complete machines === Bit-manipulating machines === [[Bit manipulation|Bit-manipulating]] machines are the simplest class. ==== FlipJump ==== The [https://esolangs.org/wiki/FlipJump FlipJump] machine has 1 instruction, a;b - flips the bit a, then jumps to b. This is the most primitive OISC, but it's still useful. It can successfully do math/logic calculations, branching, pointers, and calling functions with the help of its standard library. ==== BitBitJump ==== A bit copying machine,<ref name="mazonka" /> called BitBitJump, copies one bit in memory and passes the execution unconditionally to the address specified by one of the operands of the instruction. This process turns out to be capable of [[universal computation]] (i.e. being able to execute any algorithm and to interpret any other universal machine) because copying bits can conditionally modify the copying address that will be subsequently executed. ==== Toga computer ==== Another machine, called the [https://esolangs.org/wiki/TOGA_computer Toga Computer], inverts a bit and passes the execution conditionally depending on the result of inversion. The unique instruction is TOGA(a,b) which stands for '''TOG'''gle ''a'' '''A'''nd branch to ''b'' if the result of the toggle operation is true. {{Expand section|date=December 2016}} ==== Multi-bit copying machine ==== Similar to BitBitJump, a multi-bit copying machine copies several bits at the same time. The problem of [[Turing completeness|computational universality]] is solved in this case by keeping predefined jump tables in the memory.{{clarify|not apparent how this solves anything and what criterion is being used here?|date=December 2016}} === Transport triggered architecture === ''[[Transport triggered architecture]]'' (TTA) is a design in which computation is a side effect of data transport. Usually, some memory registers (triggering ports) within common address space perform an assigned operation when the instruction references them. For example, in an OISC using a single memory-to-memory copy instruction, this is done by triggering ports that perform arithmetic and instruction pointer jumps when written to. === Arithmetic-based Turing-complete machines === Arithmetic-based Turing-complete machines use an arithmetic operation and a conditional jump. Like the two previous universal computers, this class is also Turing-complete. The instruction operates on integers which may also be addresses in memory. Currently there are several known OISCs of this class, based on different arithmetic operations: * addition (addleq, <u>add</u> and branch if <u>l</u>ess than or <u>eq</u>ual to zero)<ref name="esolang-addleq">{{cite web |url=https://esolangs.org/wiki/Addleq|title=Addleq|author=<!--Not stated--> |website=Esolang Wiki|access-date=2017-09-16}}</ref> * decrement (DJN, <u>D</u>ecrement and branch (<u>J</u>ump) if <u>N</u>onzero)<ref name="esolang-djn">{{cite web |url=https://esolangs.org/wiki/DJN_OISC|title=DJN OISC|author=<!--Not stated--> |website=Esolang Wiki|access-date=2017-09-16}}</ref> * increment (P1eq, <u>P</u>lus <u>1</u> and branch if <u>eq</u>ual to another value)<ref name="esolang-p1eq">{{cite web |url=https://esolangs.org/wiki/P1eq|title=P1eq|author=<!--Not stated--> |website=Esolang Wiki|access-date=2017-09-16}}</ref> * subtraction (subleq, <u>sub</u>tract and branch if <u>l</u>ess than or <u>eq</u>ual to zero)<ref name="mazonka-subleq">{{cite web |url=http://mazonka.com/subleq/index.html |title=SUBLEQ|last=Mazonka|first=Oleg|date=October 2009|access-date=2017-09-16|archive-url=https://web.archive.org/web/20170629094925/http://mazonka.com/subleq/index.html|archive-date=2017-06-29}}</ref><ref name="esolang-subleq">{{cite web |url=https://esolangs.org/wiki/Subleq|title=Subleq|author=<!--Not stated--> |website=Esolang Wiki|access-date=2017-09-16}}</ref> * positive subtraction when possible, else branch (Arithmetic machine)<ref name="melzak"> {{cite journal |title=An informal arithmetical approach to computability and computation |author=Z. A. Melzak |date=1961 |journal=[[Canadian Mathematical Bulletin]] |volume=4|issue=3 |pages=279β293 |doi=10.4153/CMB-1961-031-9 |doi-access=free }}</ref>
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)