Join GitHub today
GitHub is home to over 36 million developers working together to host and review code, manage projects, and build software together.Sign up
Stack machine simulation
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Type||Name||Latest commit message||Commit time|
|Failed to load latest commit information.|
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.