A temporary storage location in the CPU for fast data access. TinyCompiled provides 8 registers: R1, R2, R3, R4, R5, R6, R7, R8
Example: R1, R5, R8
A user-defined name for a variable or function. Must start with a letter or underscore, can contain letters, digits, and underscores.
Example: counter, sum_total, my_var, _temp
A constant literal value embedded directly in the instruction. Can be decimal, hexadecimal, or binary.
Example: 42, -10, 0xFF, 0b1010
A comparison expression used in control flow statements.
Example: R1 > 10, counter == 0, x >= 5
-
VAR identifier- Declare variable (default 0) -
VAR identifier, immediate- Declare and initialize variable
Examples:
VAR counter ; counter = 0
VAR sum, 100 ; sum = 100
-
LOAD register, immediate- Load immediate value into register -
LOAD register, identifier- Load variable into register -
SET identifier, immediate- Store immediate to variable -
SET identifier, register- Store register to variable -
MOVE register, register- Copy between registers
Examples:
LOAD R1, 42 ; R1 = 42
LOAD R2, counter ; R2 = counter
SET result, 10 ; result = 10
SET sum, R3 ; sum = R3
MOVE R2, R1 ; R2 = R1
-
ADD register, register, register- Addition (dest = src1 + src2) -
ADD register, register, immediate- Addition (dest = src + immediate) -
SUB register, register, register- Subtraction (dest = src1 - src2) -
SUB register, register, immediate- Subtraction (dest = src - immediate) -
MUL register, register, register- Multiplication (dest = src1 * src2) -
MUL register, register, immediate- Multiplication (dest = src * immediate) -
DIV register, register, register- Division (dest = src1 / src2) -
DIV register, register, immediate- Division (dest = src / immediate) -
INC register- Increment register by 1 -
INC identifier- Increment variable by 1 -
DEC register- Decrement register by 1 -
DEC identifier- Decrement variable by 1
Examples:
ADD R3, R1, R2 ; R3 = R1 + R2
ADD R1, R1, 5 ; R1 = R1 + 5
SUB R2, R1, 10 ; R2 = R1 - 10
MUL R3, R2, R1 ; R3 = R2 * R1
DIV R1, R1, 2 ; R1 = R1 / 2
INC R1 ; R1++
DEC counter ; counter--
-
AND register, register, register- Bitwise AND (dest = src1 & src2) -
OR register, register, register- Bitwise OR (dest = src1 | src2) -
XOR register, register, register- Bitwise XOR (dest = src1 ^ src2) -
NOT register- Bitwise NOT (register = ~register) -
SHL register, register, immediate- Shift left (dest = src << count) -
SHR register, register, immediate- Shift right (dest = src >> count)
Examples:
AND R3, R1, R2 ; R3 = R1 & R2
OR R3, R1, R2 ; R3 = R1 | R2
XOR R3, R1, R2 ; R3 = R1 ^ R2
NOT R1 ; R1 = ~R1
SHL R2, R1, 2 ; R2 = R1 << 2
SHR R2, R1, 3 ; R2 = R1 >> 3
-
FUNC identifier/ENDFUNC- Function definition -
CALL identifier- Call function by name -
RET- Return from function -
RET register- Return with value in register
Examples:
FUNC add_numbers
ADD R1, R1, R2
RET R1
ENDFUNC
CALL add_numbers
-
LOOP identifier, immediate/ENDLOOP- Loop while var < limit -
WHILE condition/ENDWHILE- Loop while condition is true -
FOR identifier FROM immediate TO immediate/ENDFOR- Range loop -
FOR identifier FROM immediate TO immediate STEP immediate/ENDFOR- Range loop with step -
REPEAT/UNTIL condition- Post-condition loop
Examples:
LOOP i, 10 ; Loop while i < 10
PRINT i
INC i
ENDLOOP
WHILE counter > 0 ; Loop while counter > 0
DEC counter
ENDWHILE
FOR i FROM 1 TO 10 ; i goes from 1 to 10
PRINT i
ENDFOR
REPEAT ; Execute at least once
INC x
UNTIL x >= 5 ; Until x >= 5
-
IF condition/ENDIF- Execute if condition is true -
IF condition/ELSE/ENDIF- Execute different blocks based on condition
Examples:
IF R1 > 10
LOAD R2, 1
ENDIF
IF counter == 0
PRINT R1
ELSE
PRINT R2
ENDIF
-
PUSH register- Push register value onto stack -
POP register- Pop value from stack into register
Examples:
PUSH R1 ; Save R1 to stack
CALL my_function
POP R1 ; Restore R1 from stack
-
PRINT register- Print register value to stdout -
PRINT identifier- Print variable value to stdout -
PRINT immediate- Print immediate value to stdout -
INPUT register- Read integer from stdin to register -
INPUT identifier- Read integer from stdin to variable
Examples:
PRINT R1 ; Print R1
PRINT counter ; Print counter variable
PRINT 42 ; Print literal 42
INPUT R1 ; Read input into R1
INPUT user_value ; Read input into user_value
-
HALT- Terminate program execution -
NOP- No operation (do nothing)
Examples:
HALT ; Exit program
NOP ; Placeholder
- Registers: R1, R2, R3, R4, R5, R6, R7, R8
- Functions: Named, reusable code blocks
- Comments:
;single-line comments - Literals: Decimal (42), Hex (0x2A), Binary (0b1010)
- Identifiers: Letters, digits, underscore (must start with letter/underscore)
-
==- Equal to -
!=- Not equal to -
>- Greater than -
<- Less than -
>=- Greater than or equal to -
<=- Less than or equal to
; Factorial calculator with function
FUNC factorial
VAR result, 1
VAR i, 1
LOOP i, 6
LOAD R1, result
LOAD R2, i
MUL R3, R1, R2
SET result, R3
INC i
ENDLOOP
LOAD R1, result
RET R1
ENDFUNC
; Main program
CALL factorial
PRINT R1
HALT