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

From Esolang
(Redirected from KISS)
Jump to navigation Jump to search

Logo
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: x handles virtually all computation (with a secondary helper register y).
  • 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 .kiss source 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