Skip to content

Latest commit

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Stack machine simulation.
Requires clang 3.1.
* Usage:
** ./runner [-v] [-f asm_file]
*** -v: verbose, step through code
*** -f: asm file to assemble and run
* Instructions:
** PUSH
Pushes the value in the next code instruction.
** POP
Discards the top stack value.
** NOP
Do nothing.
** HLT
Halt the machine.
** OUT
Pops a value and prints the value to stdout as a char.
** STORE
Pops a value, pops an address, then places the value in mem
at the addres.
** LOAD
Pops an address, loads that value from memory, then pushes
that value.
** ADD
Pops two values and pushes the sum.
** SUB
Pops two values and pushes the difference.
** MUL
Pops two values and pushes the product.
** DIV
Pops two values and pushes the quotient and remainder.
** JMP
Sets the CPU instruction pointer to the value popped.
** JZ
Pops an address and pops a value. If the value is zero,
moves cpu->ip to the address.
** JNZ
Pops an address and pops a value. If the value is not zero,
moves cpu->ip to the address.
** CALL
Pops an address and pushes to the return pointer stack.
Moves instruction pointer to that address.
** RET
Pops an address from the return pointer stack and moves
the instruct pointer there.
** DUP
Duplicates the value on the top of the stack.
** SWAP
Swaps the values of the top two values on the stack.
** INT
Registers an interrupt handler. The handler address and the
resource address are popped from the stack.
** DEBUG
Put the cpu into debug mode.
* Hardware:
** KBD
Awaits a keystroke and then pushes it onto the stack.

About

Stack machine simulation

Resources

Stars

14 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages