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.
Keep-It-Simple-Syntax
(Redirected from KISS)

| Paradigm(s) | imperative, procedural |
|---|---|
| Designed by | User:Elliktronic |
| Appeared in | 2025 |
| Type system | dynamic, weak |
| Memory system | register-based (X, Y) + 1024-cell linear memory |
| Dimensions | one-dimensional |
| Computational class | Turing complete |
| Reference implementation | Original KISS C-interpreter |
| Major implementations | KISJ (AOT JVM Bytecode Compiler) |
| Dialects | KISJ |
| Influenced by | Brainfuck, Assembly |
| File extension(s) | .kiss |
KISS - Keep It Simple Syntax
A minimal imperative esolang designed around the worship of a single register: x.
Overview
KISS is designed to be absurdly minimalistic.
It features:
- The Sacred Register:
xhandles virtually all computation (with a secondary helper registery). - Direct Bytecode & Raw Memory: 1024 addressable integer cells with direct and indirect indexing.
- Subroutines: Hardware-style call stack (
CL/RT). - Control Flow: Skip-based branch conditions and labels.
- I/O: Character, integer, and raw string outputs.
Syntax
| Command | Arguments | Description |
|---|---|---|
A |
val |
Assign integer or ASCII character literal to x (e.g. A 42, A 'X')
|
I / D |
n |
Increment / Decrement x by n
|
M / Q |
n |
Multiply / Integer divide x by n
|
R |
n |
Modulo: x = x % n
|
X |
n |
Bitwise XOR: x = x ^ n
|
^ |
0 |
Square: x = x * x
|
t |
- | Integer square root: x = (int)sqrt(x)
|
C |
- | Clear: x = 0
|
N |
- | Negate: x = -x
|
B |
- | Bitwise NOT: x = ~x
|
Y |
- | Copy x to y
|
V |
- | Restore y to x
|
S |
n |
Swap x <-> y, then set x = n
|
> |
addr / Y |
Store x into memory: memory[addr] = x or memory[y] = x
|
< |
addr / Y |
Load into x from memory: x = memory[addr] or x = memory[y]
|
? |
n |
Assign pseudorandom number: 0 <= x < n
|
:label |
- | Define code label |
G |
label |
Unconditional jump to :label
|
E |
n |
Skip next line if x == n
|
L |
n |
Skip next line if x < n
|
CL |
label |
Call subroutine at :label (pushes return address to call stack)
|
RT |
- | Return from subroutine |
HT |
- | Halt program execution |
P |
- | Print x as a decimal integer (with newline)
|
CP |
- | Print x as an ASCII character
|
CI |
- | Read single character from stdin into x
|
PR |
"str" |
Print literal string (supports \n, \t)
|
Examples
Hello World (New Way)
Using the PR instruction introduced in KISJ:
PR "Hello World!\n" HT
Hello World (Old Way)
Character-by-character output via ASCII codes into the x register:
A 72 # 'H' CP A 101 # 'e' CP A 108 # 'l' CP CP A 111 # 'o' CP A 32 # ' ' CP A 87 # 'W' CP A 111 # 'o' CP A 114 # 'r' CP A 108 # 'l' CP A 100 # 'd' CP A 10 # '\n' CP HT
Implementations
- Original C Interpreter: A lightweight ~300 LOC interpreter executing scripts via file scanning.
- KISJ (Ahead-Of-Time Compiler): An industrial-grade JVM compiler written in Java using OW2 ASM. Translates
.kisssource into high-performance JVM bytecode (.class) with control-flow optimization, dead-code elimination, and many super mega cool things
Community & Sources
Now X is your life