Skip to content

true-grue/PigletC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PigletC — a tiny C-like language compiler for PigletVM

PigletC is based on raddsl toolset and was made for teaching purposes.

Simple example.

int r; int n; void main() { n = 5; r = 1; while (n > 1) { r = r * n; n = n - 1; } print(r); }

Result of compilation.

PUSHI 1 PUSHI 5 STORE PUSHI 0 PUSHI 1 STORE L0: PUSHI 1 LOAD PUSHI 1 GREATER JUMP_IF_FALSE L1 PUSHI 0 PUSHI 0 LOAD PUSHI 1 LOAD MUL STORE PUSHI 1 PUSHI 1 LOAD PUSHI 1 SUB STORE JUMP L0 L1: PUSHI 0 LOAD PRINT DONE 

Result of VM execution.

pigletvm-exec asm fact.c.pvm fact.c.b pigletvm-exec run fact.c.b 120 Result value: 0 PROFILE: switch code finished took 0ms 120 Result value: 0 PROFILE: switch code (no range check) finished took 1ms 120 Result value: 0 PROFILE: threaded code finished took 0ms 120 Result value: 0 PROFILE: trace code finished took 1ms