# smile

Jump to navigation Jump to search

smile is inspired by brainfuck. It decomposes [] into two parts q p and < >.It merges. And, into +.

## Instruction set one

Line : 00: instructions ,01：Pointer 1,02：Pointer 2......99: display screen.
+   _l1_(Line) _l2_(Line) The byte pointed to by pointer L1 plus the byte pointed to by pointer L2.
+   _l1_(Line) _x_(number) The byte pointed to by pointer L1 plus x.
-   _l1_(Line) _l2_(Line) The byte pointed by pointer  L1  minus the byte pointed by pointer  L2 .
</> _l_(Line) _x_(number) Move x bits to the left or right in l.
q:⌒⌒If the cell at the pointer is not 0, it executes normally.
╰╯If the cell at the pointer is 0,the next instruction will be skipped.
p:⌒⌒If the cell at the pointer is 0,, it executes normally.
╰╯If the cell at the pointer is not 0,the next instruction will be skipped.
Special：
. = + 99 _l1_(Line) Output the byte pointed by pointer L1 to the display screen.
, = + _l1_(Line) 99 Input from the display to the byte pointed by pointer L1.

--2021.07.12

## Instruction set two

It uses haver structure to store program and data separately. So there are two pointers to the memory address. The read-write head of a Turing machine is a pointer. Read write head of Turing machine:0 , Program pointer:1 , Data pointer:2 ， number:x

+/-/</> 0/1/2 x/0/1/2: 0/1/2 = 0/1/2 +/-/</> x/0/1/2
0       1     2        1     = 1     0       2
d/q     0/1/2 0/1/2  : if 0/1/2 d:!=/q:== 0 0/1/2 > 2
0       1     2           1     0           2
+/- 0x Add or subtract x from the byte pointed by the read-write head of Turing machine.
+/- 00 The Turing machine read-write header to the byte plus or minus the Turing machine read-write header to the byte.
+/- 01 Add or subtract the bytes pointed to by the program pointer from the bytes pointed to by the Turing machine read-write header.
+/- 02 Add or subtract the byte pointed to by the data pointer from the byte pointed to by the Turing machine read-write header.
+/- 1x Add or subtract x from the byte pointed to by the program pointer.
+/- 10 Program pointer to the byte plus or minus the Turing machine read-write header to the byte.
+/- 11 Add or subtract the bytes pointed to by the program pointer from the bytes pointed to by the program pointer.
+/- 12 Program pointer to the byte plus or minus the data pointer to the byte.
+/- 2x Add or subtract x from the byte pointed to by the data pointer.
+/- 20 Data pointer to the byte plus or minus the Turing machine read-write header to the byte.
+/- 21 Data pointer to the byte plus or minus the program pointer to the byte.
+/- 22 The byte that the data pointer points to plus or minus the byte that the data pointer points to.
+:Add,-:subtract,<:towards the left,>:towards the right,d=P,q=Q(See above)

--2021.07.21