We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.
JOMP
JOMP is an OISC, which is a type of Esoteric programming language with one instruction. It uses prime factorisation to simulate a Minsky machine using Godel numbering, a form of mAME.
Memory model
JOMP's memory model is as simple as it gets, one register, which is named R.
The instruction
This is the instruction in C pseudocode.
x = R * a % b; R = (x ? R : R*a/b); goto(x ? j : ip+1)
The instruction itself bring written as
a / b : j
But to understand it, you need to know what JOMP stands for, it stands for Jump Or Multiply Proper Fraction. The instruction has 3 operands, a, b, and j. What it does, is that it sets a CPU flag named x to the result of R * a (mod b) and checks if the flag is zero, if it is, R is set to R * a / b, else nothing happens. Then, the CPU flag named x is checked again, if it is zero, execution goes to the next instruction, else, execution jumps to program address j.
Computational class
JOMP is Turing-complete. And its turing-completeness can be proven using 2 methods.
Method 1
JOMP can simulate FRACTRAN, as the fractran instruction
a / b
is equivalent to the JOMP instruction
a / b : 0
where 0 is the start of the program
Method 2
JOMP can simulate a Minsky Machine as said above in the introduction. let us say that the 2 counters of the minsky machine are numbered 2 and 3. The state of the minsky machine can be encoded as 2^x*3^y, with x and y being the actual values of the minsky machine's registers: Incrementing counter "2" is equal to the JOMP instruction
2 / 1 : ip+1
where ip+1 is whatever the instruction pointer is, plus one.
Incrementing counter "3" is equal to the JOMP instruction
3 / 1 : ip+1
with ip+1 being whatever the instruction pointer is, plus one.
Decrementing counter "2" and jumping if zero is equal to the JOMP instruction
1 / 2 : j
with j being the jump address.
Decrementing counter "3" and jumping if zero is equal to the JOMP instruction
1 / 3 : j
with j being the jump address.