Yashotantra Academy logo
← Python theorytheory 0/50 · 0%
level 1
Curious · 0 XP
streak
0d
perfect
0
badges
0

100 XP to Apprentice

Capstone · hard

49. Building a mini virtual machine / interpreter

Executing a tiny stack-based instruction set in Python.

1 min read3 questionsup to 50 XPtopic 49/50

Read in another language

AI translates the explanation and quiz text while preserving code and answer scoring.

Implementing a toy stack machine reinforces how real VMs (including the EVM) execute a sequence of simple opcodes against a stack and program counter.

python
def run(program: list[tuple]) -> int:
    stack = []
    for instr in program:
        op = instr[0]
        if op == "PUSH":
            stack.append(instr[1])
        elif op == "ADD":
            b, a = stack.pop(), stack.pop()
            stack.append(a + b)
        elif op == "MUL":
            b, a = stack.pop(), stack.pop()
            stack.append(a * b)
        else:
            raise ValueError(f"unknown op {op}")
    return stack[-1]

run([("PUSH", 2), ("PUSH", 3), ("ADD",), ("PUSH", 4), ("MUL",)])  # (2+3)*4 = 20

This mirrors the EVM's stack-based execution model at a tiny scale: opcodes pop operands, compute, and push results, with the final stack top as the result.

How to study this topic

  1. 1. Read the explanation once end to end, skipping the code.
  2. 2. Re-read the code snippets and say out loud what each line does.
  3. 3. Answer the quiz without scrolling back — that is the real check.
  4. 4. Read every explanation, even for the answers you got right.

Scoring

  • · Up to 30 XP from quiz accuracy.
  • · +15 XP for a perfect first attempt.
  • · +5 XP while a 3-day streak is running.
  • · 75% or higher marks the topic complete.

Check your understanding

  1. 1. In the ADD case, why is `b` popped before `a`?

  2. 2. What does the toy VM's stack represent conceptually?

  3. 3. What does `run([("PUSH",2),("PUSH",3),("ADD",)])` return?

Badges

First light
Pass your first topic
Sharp shooter
3 perfect first-try quizzes
On a roll
Study 3 days in a row
Week warrior
Study 7 days in a row
Grinder
Earn 500 XP
Deep diver
Earn 1500 XP