Pointy

From Esolang
Jump to: navigation, search

Pointy is a language by Ihope127. The basic datatype is the pointer.

Instructions

The instructions:

LBL foo: not really an instruction, but marks a destination for a DEC jump.
CPY x y: stores the value x in memory location y.
INC x: increments the value at memory location x.
DEC x foo: tries to decrement the value at memory location x. If x already held 0, jumps to foo.
OUT x: outputs x.
INP x: inputs a value into the memory location x.

Pointers can be dereferenced using the * operator: *x is the value at location x. Since there is a memory location 0 (there is no null pointer), * never fails to produce a result.

Examples

Hello, World!

CPY 108 1
CPY 111 2 
OUT 72
OUT 101
OUT *1
OUT *1
OUT *2
OUT 44
OUT 32
OUT 119
OUT *2
OUT 114
OUT *1
OUT 100
OUT 33

Cat program

LBL start
INP 0
OUT *0
DEC 1 start ; the value at 1 will be 0, so this jumps to start

Computational class

Pointy is Turing-complete because it can simulate a Minsky machine. It can also emulate Brainfuck with a tape that extends infinitely only to the right, as shown in the table below.

Let x store the current cell number, y be an unused value set to 0, and z be free for use.

Brainfuck operation(s) Pointy operation(s)
>
INC x
<
DEC x
+
INC *x
-
DEC *x foo
DEC y bar
LBL foo
CPY 255 *x
LBL bar
,
INP *x
.
CPY *x z
OUT *z
[
DEC x foo
LBL bar
INC x
]
DEC x foo
DEC y bar
LBL foo

External resources