A one-instruction set computer (OISC), sometimes referred to as an ultimate reduced instruction set computer (URISC), is an abstract machine that uses only one instruction – obviating the need for a machine language opcode.
[5] Currently known OISCs can be roughly separated into three broad categories: Bit-manipulating machines are the simplest class.
Another machine, called the Toga Computer, inverts a bit and passes the execution conditionally depending on the result of inversion.
The problem of computational universality is solved in this case by keeping predefined jump tables in the memory.
Usually, some memory registers (triggering ports) within common address space perform an assigned operation when the instruction references them.
However, it is possible to construct Turing complete machines using an instruction based on other arithmetic operations, e.g., addition.
[3]: 4–7 Pseudocode: Conditional branching can be suppressed by setting the third operand equal to the address of the next instruction in sequence.
Consequently, for a subleq instruction (a, b, c), the program interprets a < 0, b < 0, or an executed branch to c < 0 as a halting condition.
Similar interpreters written in a subleq-based language (i.e., self-interpreters, which may use self-modifying code as allowed by the nature of the subleq instruction) can be found in the external links below.
A general purpose SMP-capable 64-bit operating system called Dawn OS has been implemented in an emulated Subleq machine.
Some memory areas in the virtual machine are used for peripherals like the keyboard, mouse, hard drives, network card, etc.
Basic applications written for it include a media player, painting tool, document reader and scientific calculator.
[13] A 32-bit Subleq computer with a graphic display and a keyboard called Izhora has been constructed by Yoel Matveyev as a large cellular automation pattern.
Pseudocode: After giving a few programs: multiplication, gcd, computing the n-th prime number, representation in base b of an arbitrary number, sorting in order of magnitude, Melzak shows explicitly how to simulate an arbitrary Turing machine on his arithmetic machine.
He mentions that it can easily be shown using the elements of recursive functions that every number calculable on the arithmetic machine is computable.
A proof of which was given by Lambek[19] on an equivalent two instruction machine : X+ (increment X) and X− else T (decrement X if it not empty, else jump to T).
Some of the cells are control flow instructions to alter the program execution with jumps, conditional execution, subroutines, if-then-else, for-loop, etc... A commercial transport triggered architecture microcontroller has been produced called MAXQ, which hides the apparent inconvenience of an OISC by using a "transfer map" that represents all possible destinations for the move instructions.
Cryptoleq works on continuous cells of memory using direct and indirect addressing, and performs two operations O1 and O2 on three values A, B, and C: where a, b and c are addressed by the instruction pointer, IP, with the value of IP addressing a, IP + 1 point to b and IP + 2 to c. In Cryptoleq operations O1 and O2 are defined as follows: The main difference with Subleq is that in Subleq, O1(x,y) simply subtracts y from x and O2(x) equals to x. Cryptoleq is also homomorphic to Subleq, modular inversion and multiplication is homomorphic to subtraction and the operation of O2 corresponds the Subleq test if the values were unencrypted.
Multiplication on an encrypted domain is assisted by a unique function G that is assumed to be difficult to reverse engineer and allows re-encryption of a value based on the O2 operation: where