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.
GABE
GABE is an esoteric programming language made by User:GenericSnow, written in a day, second to be made in the Alphabetical Esolangs
GABE stands for "GABE ain't bytecode execution"
Information
Similar to brainfuck, this language uses a memory tape, unlike brainfuck, this tape is not readable
This esolang technically only has 3 usable inputs, R, A, and E
R -- Moves the pointer right A -- Adds to where the pointer currently is E -- Ends the script
While these are not much, it goes deeper
To actually do things here, you use the memory tape as your script, for example:
Cell 1: 1 Cell 2: 2 Cell 3: 1
This small script sets register 2 to 1, how you would write it is:
RA RAA RA
Here's what each opcode does in this language.
1: Set Register/ SET <reg> <arg> -- Sets register <reg> to <arg>, if this register does not exist, creates it 2: Remove Register / REM <reg> -- Removes a register from the table 3: Add To Register/ ADD <reg> <arg> -- Adds <arg> to <reg> 4: Subtract From Register/ SUB <reg> <arg> -- Subtracts <arg> from <reg> 5: Marker / MRK -- Leaves a marker at that location in memory 6: Jump / JMP <mrk> -- Jumps to <mrk> location, <mrk> must be the marker number 7: Compare / CMP <arg1> <arg2> -- Compares these two values and sets the compflag to true or false, true if <arg1> is greater than <arg2>, else is false 8: Branch If Compflag / BCP <mrk> -- If the compflag is true, jump to <mrk> 9: Branch If Not Compflag / NCP <mrk> -- If the compflag is false, jump to <mrk> 10: Compare Include Equal / CIE <arg1> <arg2> -- Compare instruction, difference being instead of greater than, it's greater than or equal to that will return true 11: Compare Only Equal / CEQ <arg1> <arg2> -- Compare instruction, but checks only if arg2 is equal to arg1 12: Remove Marker / RMM <mrk> -- Removes a marker 13: Output Register / OUT <reg> -- Outputs a register to the terminal 14: Output Register In ASCII / OAS <reg> -- Outputs a register to the terminal as an ASCII character 15: Takes a single user input
Examples
RA RA RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA RA RAA RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA RA RAAA RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA RA RAAAA RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA RA RAAAAA RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA RA RAAAAAA RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA RA RAAAAAAA RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA RA RAAAAAAAA RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA RA RAAAAAAAAA RAAAAAAAAAA RAAAAAAAAAAAAAA RA RAAAAAAAAAAAAAA RAA RAAAAAAAAAAAAAA RAAA RAAAAAAAAAAAAAA RAAA RAAAAAAAAAAAAAA RAAAA RAAAAAAAAAAAAAA RAAAAA RAAAAAAAAAAAAAA RAAAAAA RAAAAAAAAAAAAAA RAAAA RAAAAAAAAAAAAAA RAAAAAAA RAAAAAAAAAAAAAA RAAA RAAAAAAAAAAAAAA RAAAAAAAA RAAAAAAAAAAAAAA RAAAAAAAAA E
Alphabet printer
A RAAA RAAAAAAAAAA -- line feed register RA RA RA RA RAA RAAAAAAAAAAAAAAAAAAAAAAAAAA RA RAAAA RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA RAAAAA -- this is the marker for bcp RAAAAAAA RAA RA RAAAAAAAAAAAAAA RAAAA -- prints register 4 RAAA RA RA -- increments reg 1 RAAA RAAAA RA RAAAAAAAAAAAAAA RAAA -- this prints line feed RAAAAAAAA RA E