The Lotg Pseudocode
“Lotg” (originally standing for “Language of the Gods”) is a pseudocode I developed during my first year at the Technion. I wanted to develop such a code with a minimal set of instructions. Initially it had eight instructions, but I was able to reduce it to five. I believe it is Turing-complete. Here is an explanation of it.
Lotg is defined on a memory in which there is a cell associated with every integral number (positive, negative and zero), and every cell can contain one integral value. The cells will be marked as m[i] where i is the index of the cell. There are two registers - “pointer” and “register” which will be marked as r and p.
The following instructions are defined:
- p ← i, where i is any integral parameter. This is the only instruction that accepts an arbitrary parameter.
- r ← r+p
- p ← m[p]
- m[p] ← r ; r ← 0 - a composite instruction doing two instructions one after the other.
- if r>0 jump to p (If r is greater than 0 jump to the instruction whose index is p).
Sample Constructs
Using these instructions one can define the following macros:
m[m[i]] = m[m[j]]
p = -10**100 # Essentially a number that should not concern us. m[p] = r ; r = 0 p = j p = m[p] p = m[p] r += p p = i p = m[p] m[p] = r ; r = 0
m[m[i]] += m[m[j]]
p = -10**100 m[p] = r; r = 0 p = j p = m[p] p = m[p] r += p p = i p = m[p] p = m[p] r += p p = i p = m[p] m[p] = r ; r = 0
if (m[i] = j) { [BLOCK] }
p = -10**100 m[p] = r ; r = 0 p = -j r += p p = i p = m[p] r += p p = i(end) if r > 0 jump p p = 1 r += p p = i(after) if r > 0 jump p p = -10**100 m[p] = r ; r = 0 p = 1 r += p p = i(end) if r > 0 jump p after: [BLOCK] end: