ft: Implement memory pointer (Mp) operand

This commit is contained in:
2025-05-25 11:00:47 +09:00
parent 6762195378
commit 73b1a99cbd
3 changed files with 63 additions and 19 deletions

View File

@@ -206,11 +206,13 @@ pub enum Mnemonic {
CALL_p(Pointer),
CALL_v(isize),
CALL_Mod(ModRmTarget),
CALL_Mp(ModRmTarget, Pointer),
// JUMP
JMP_p(Pointer),
JMP_b(isize), // parses IByte, but stores as isize
JMP_v(isize), // parwses IWord, but stores as isize
JMP_Mod(ModRmTarget),
JMP_Mp(ModRmTarget, Pointer),
// WAIT
WAIT,
// Push/Pop Flags
@@ -236,8 +238,8 @@ pub enum Mnemonic {
RETF,
IRET,
// Load ES/DS Register
LES(ModRmTarget),
LDS(ModRmTarget),
LES(ModRmTarget, Pointer),
LDS(ModRmTarget, Pointer),
// NOT
NOT(ModRmTarget),
// NEG
@@ -443,11 +445,13 @@ impl fmt::Display for Mnemonic {
Self::CALL_p(ptr) => write!(f, "call {ptr}"),
Self::CALL_v(word) => write!(f, "call {word:#04x}"),
Self::CALL_Mod(target) => write!(f, "call {target}"),
Self::CALL_Mp(target, ptr) => write!(f, "call {target}, {ptr}"),
Self::JMP_p(ptr) => write!(f, "jmp {ptr}"),
Self::JMP_b(byte) => write!(f, "jmp {byte:#04x}"),
Self::JMP_v(word) => write!(f, "jmp {word:#04x}"),
Self::JMP_Mod(target) => write!(f, "jmp {target}"),
Self::JMP_Mp(target, ptr) => write!(f, "jmp {target}, {ptr}"),
Self::WAIT => write!(f, "wait"),
@@ -473,8 +477,8 @@ impl fmt::Display for Mnemonic {
Self::RETF => write!(f, "retf"),
Self::IRET => write!(f, "iret"),
Self::LES(target) => write!(f, "les {target}"),
Self::LDS(target) => write!(f, "lds {target}"),
Self::LES(target, ptr) => write!(f, "les {target}, {ptr}"),
Self::LDS(target, ptr) => write!(f, "lds {target}, {ptr}"),
Self::NOT(target) => write!(f, "not {target}"),
Self::NEG(target) => write!(f, "neg {target}"),