Judging by the implementation and language-lawyering, there are two options -
If we consider the definition of "two previous cells" as, literally, the two previous cells, then a single-char or empty malbolge program is illegal in the language, because it can not be executed according to the specs.
If we consider the definition of
[m] = crz [m-2], [m-1]
, it gets interesting. The main implementation (alongside probably most of the rest) usesunsigned short
(orint
) for the memory pointer. When you try subtracting2
from1
(m-2
) it results in0xffff
, decimal65535
(see this answer for details), which is just a bit over malbolge's59049
memory limit. That glitch runs (almost) perfectly on a normal machine, using the0xffff
cell for crazy-op computing (without even harming the out-of-environment memory!), but will fail on a limited-memory or virtual machine.- You might end up with
0xffffffff
instead of0xffff
, depending on the way you use the pointer.
- You might end up with
In short,
- If you run it by hand, assume it fails.
- If you run it on a virtual machine, it fails.
- If you run it on a simulator, it will probably work, but will fail the point of running itself, since
0xffff
is a random-valued memory cell, leading to random values along the environment memory. On the other hand, what can you expect from a single-byte malbolge program?