README
September 25, 2012 ยท View on GitHub
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.