Age | Commit message (Collapse) | Author |
|
Uses some bit hacks to quickly check what data type an opcode may have
by shifting down to units then casting it to a data_type_t.
Not very well tested yet, we'll need to see now.
|
|
|
|
Instead of taking an operand and a register, mov just uses the stack
for the operand. Therefore, there's no need for a register member in
inst_t.
As a result, PUSH_*_REGISTER now uses the operand for the register.
|
|
Introduced an enum (opcode_type_t) for the masks and values of each
opcode, which allows defining a single enum which checks an opcode by
a opcode_type_t.
|
|
POP instructions do not require an operand: they're a unary operator.
|
|
We at most have 255 registers, so no need to have a word for it.
|
|
More precise in naming
|
|
This is so push opcodes are closer together
|
|
|
|
Bit mask is 100.
|
|
Pretty simple implementation
|
|
By default, a zero initialised set of instructions are NOOPs, which is
great.
Last two bits of a push opcode is always 01. Rest of the bits are
used to distinguish between differing types of push. This makes it
easier to inspect on the byte level what type of opcode we have.
|
|
|