You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit introduces the basic block in emulator, meaning that
it makes emulator decode and execute numerous instructions at a
time.
Use hash table and block prediction to manage blocks efficiently.
In decode stage, allocate a new block which contains up to 1024
instruction by default, decode the instruction into block until it
is full or the latest instruction is a branch instruction and put
it into the block map.
In execution stage, emulator executes instructions in block. The
number of instructions based on the member insn_num in struct block.
In particular, when an exception/interrupt occurs, emulator will do
the following steps:
1. Execute the exception/interrupt handler that resets a new program
counter from the register mtvec and function emulate returns false.
2. Enter to the decode stage again, and create new block based on the
new program counter.
That is, emulator will stop executing old block and create the new one
from new program counter.
0 commit comments