NVM Programming Model

Notation

Instruction Set

push - Push 32 bit constant, address or register data onto stack pop - Pop a register value from the stack add_sp - Add offset to stack pointer xor - Xor memory indirect or register contents add - Add 32 bit register or constant to register sub - Subtract constant from register test - Test register with mask or - Or register with constant cmp - Compare registers and assign halt - Halt the virtual machine syscall - Call the system function whose thunk function is at the specified address load - Load constant or memory value into register dec - Decrement register inc - Increment register clear Set the specified register to zero scanb Search memory starting at [R0] for byte value trap Program interrupt nop - No operation jmpeq - Compare top two dwords on stack and jump if they are equal jmp - Jump absolute jnz - Jump absolute if flag word is not zero jz - Jump absolute if flag word is zero call - Call subroutine ret - Return from subroutine