ft(interpreter): impl short jumps

This commit is contained in:
2025-06-11 15:44:42 +09:00
parent a4dc420d60
commit c9bf8fdc46
6 changed files with 160 additions and 57 deletions

View File

@@ -136,27 +136,27 @@ pub enum Mnemonic {
// DEC
DEC_Reg(Register),
DEC_Mod(ModRmTarget),
// Jumps
JO(isize),
JNO(isize),
JB(isize),
JNB(isize),
JZ(isize),
JNZ(isize),
JBE(isize),
JA(isize),
JS(isize),
JNS(isize),
JPE(isize),
JPO(isize),
JL(isize),
JGE(isize),
JLE(isize),
JG(isize),
LOOPNZ(isize),
LOOPZ(isize),
LOOP(isize),
JCXZ(isize),
// Jumps conditional
JO(usize),
JNO(usize),
JB(usize),
JNB(usize),
JZ(usize),
JNZ(usize),
JBE(usize),
JA(usize),
JS(usize),
JNS(usize),
JPE(usize),
JPO(usize),
JL(usize),
JGE(usize),
JLE(usize),
JG(usize),
LOOPNZ(usize),
LOOPZ(usize),
LOOP(usize),
JCXZ(usize),
// TEST
TEST(ModRmTarget, Register),
@@ -203,13 +203,13 @@ pub enum Mnemonic {
CWD,
// CALL
CALL_p(Pointer32),
CALL_v(isize),
CALL_v(usize),
CALL_Mod(ModRmTarget),
CALL_Mp(Pointer16),
// JUMP
JMP_p(Pointer32),
JMP_b(isize), // parses IByte, but stores as isize
JMP_v(isize), // parwses IWord, but stores as isize
JMP_b(usize), // parses IByte, but stores as isize
JMP_v(usize), // parwses IWord, but stores as isize
JMP_Mod(ModRmTarget),
JMP_Mp(Pointer16),
// WAIT