AssemblerFuck++

From Esolang
Jump to navigation Jump to search

Creator and Name

AssemblerFuck++ is an esoteric language created by the User:Esolang1. This language is heavily based on AssemblerFuck, with if statements and more loops. So, you can expect to see some similarities with the language AssemblerFuck in this page. (E1-0003)

Code

Syntax

The syntax is simply

   INSTRUCTION PARAMETER(S)

Instructions

   ADD <VALUE>              Adds <VALUE> to current cell
   SUB <VALUE>              Subtracts <VALUE> from current cell
   MOV <TARGET>, <OBJECT>   Moves <OBJECT> to <TARGET>
   UNTIL <VALUE>            Executes code until cell value is equal to <VALUE>
   DO <VALUE>               Executes code <VALUE> times
   IF <VALUE>               Executes code if current cell value is equal to <VALUE>
   END                      Marks the end of the code of a loop, or an if statement

Value can be any natural number, or 0. -1 can be used to create infinite do loops.

Valid <OBJECT> Content and usage

   P      Pointer, move pointer
   IN     Input, save input

Valid <TARGET> Content and usage

   P      Pointer, save input
   LEFT   Left, move pointer
   RIGHT  Right, move poiner
   OUT    Output, print value

Variables

Like brainfuck, this language is cell-based. There are no instructions related to declaring variables.

I/O

Inputs and outputs are controlable with the MOV instruction. Getting a single characer input and saving to current cell:

   MOV P, IN

Printing current cell value:

   MOV OUT, P

Directly printing the input is also possible, but it won't save the input to the cell:

   MOV OUT, IN

Examples

Truth-machine

   MOV P, IN
   IF 48
     MOV OUT, P
   END
   IF 49
     DO -1
       MOV OUT, P
     END
   END

Infinite cat

   DO -1
     MOV OUT, IN
   END