Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
A simple stack-based virtual machine that runs C in the browser.
| Date | Stars |
|---|---|
| 2026-07-24 | 656 |
| 2026-07-25 | 656 |
| 2026-07-28 | 656 |
| 2026-07-30 | 656 |
| 2026-08-06 | 656 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
## What is it?
1. A simple stack-based virtual machine that runs C in the browser.
2. An interactive tutorial that covers C, how the VM works, and how the language is compiled, everything from the ground up.
## Why?
This project demystifies compilers without getting lost in unnecessary details.
MiniC visually explores how a compiler can break down the C language into simple instructions and how those are executed by a virtual CPU.

## Can I see it?
1. [Sandbox](https://vasyop.github.io/miniC-hosting)
2. Tutorial (for people with 0 programming experience or willing to learn C) :
* [Part 1](https://vasyop.github.io/miniC-hosting/?0) - Introduction
* [Part 2](https://vasyop.github.io/miniC-hosting/?1) - Expressions (part 1)
* [Part 3](https://vasyop.github.io/miniC-hosting/?2) - Expressions (part 2)
* [Part 4](https://vasyop.github.io/miniC-hosting/?3) - Variables and program structure
## Subscribe
Get [notified](https://github.us20.list-manage.com/subscribe/post?u=2790571880963241ec5dd7d11&id=0e2d1b34de) when new tutorials are released.
## Feedback
Join the discussion on our [subreddit](https://www.reddit.com/r/minic/).
## Support
Consider [supporting](https://github.com/vasyop/miniC-hosting/blob/master/support.md) the project.
## Documentation
### Virtual Instruction Set
Note: BEFORE each instrunction, IP increases by 1
PUSH
* increases SP by 1 and sets the value at SP to the argument ("Pushes the argument onto the stack")
LEA:
* similar to PUSH
* instead of pushing just the argument, it pushes BP + argument ("Loads the Effective Address")
* used to push the address of a local variable on the stack ("LEA 2" is used to push the address of the second local variable on the stack)
DRF:
* replaces the address on the top of the stack with the value at that address ("Dereferences the address")
* e.g. to push the value of a local variable, we use LEA follwed by DRF
POP
* decreases SP by 1 ("pops a value off the stacK")
* used if the value on the top of the stack is not needed, to prevent the stack from growing indefinitely
* e.g. after calling a function without indending to use its returned value
JMP
* sets IP to the argument ("jump to the address gives as argument")
* used to compile control structures such as "if" and "while"
JZ:
* pops a value off the stack, and if that value is 0, it jumps to the argument ("jump if zero")
* used to compile constrol structures such as "if" and "while"
FSTART:
* a sequence of simpler instructions performed before each function ("Function START");
* pushes the value of BP effectively saving it before setting BP
* sets BP to SP
* increase SP by the value of the argument, effectively making room for local variables
* effectively sets up the stack so that BP so that BP points to the old BP, BP + 1 to the first local variable, BP + 2 to the second, etc.
* before the function returns, BP will be restored to its old value
RET:
* a sequence of simpler instructions performed before each function RETurns
* remembers the value on the top of the stack. this is the function return value.
* sets SP to BP, effectively popping all the local variables and the returned value
* sets BP to the value on the top of the stack, effectively restoring BP to its value before FSTART
* performs a POP
* sets IP to the value on the top of the stack, effectively setting IP to point to the next instrunction after the CALL that created this function
* performs a POP
* decreases SP by the argument, effectively popping all the arguments pushed before the function was called
* replaces the value on the top of the stack (which is the address of the current function) with the function return value remembered earlier
all the previous POPs ensure that SP is now set to its original value before calling the function + 1. The top of the stack is the returned value of the function
CALL:
a sequence of simpler instructions performed to CALL a functiExcerpt of 7,006 characters
Read on GitHub102
1
1
Would you bet a product on this? Bounded 0–100 and slow moving.
matched fp:fb5c573ccaf7d358, topic:tutorial, readme:tutorial