ft: implement some more instructions

This commit is contained in:
2025-05-14 20:38:51 +09:00
parent 22d7c5571f
commit 45ab158b95
2 changed files with 103 additions and 40 deletions

View File

@@ -165,22 +165,27 @@ pub enum Mnemonic {
DEC_Reg(Register),
DEC_Mod(ModRmTarget),
// Jumps
JO(Byte),
JNO(Byte),
JB(Byte),
JNB(Byte),
JZ(Byte),
JNZ(Byte),
JBE(Byte),
JA(Byte),
JS(Byte),
JNS(Byte),
JPE(Byte),
JPO(Byte),
JL(Byte),
JGE(Byte),
JLE(Byte),
JG(Byte),
JO(IByte),
JNO(IByte),
JB(IByte),
JNB(IByte),
JZ(IByte),
JNZ(IByte),
JBE(IByte),
JA(IByte),
JS(IByte),
JNS(IByte),
JPE(IByte),
JPO(IByte),
JL(IByte),
JGE(IByte),
JLE(IByte),
JG(IByte),
LOOPNZ(IByte),
LOOPZ(IByte),
LOOP(IByte),
JCXZ(IByte),
// TEST
TEST(ModRmTarget, Register),
TEST_Ib(ModRmTarget, Byte),
@@ -195,6 +200,9 @@ pub enum Mnemonic {
MOV_ToReg(ModRmTarget, Register),
MOV_FromSReg(ModRmTarget, SegmentRegister),
MOV_ToSReg(ModRmTarget, SegmentRegister),
MOV_Ib(ModRmTarget, Byte),
MOV_Iv(ModRmTarget, Word),
MOV_AL0b(Byte),
MOV_AX0v(Word),
MOV_0bAL(Byte),
@@ -281,8 +289,28 @@ pub enum Mnemonic {
SHL_fromReg(ModRmTarget, Register),
SHR_fromReg(ModRmTarget, Register),
SAR_fromReg(ModRmTarget, Register),
// IN
IN_AL(Byte),
IN_AX(Byte),
IN_ALDX,
IN_AXDX,
// OUT
OUT_AL(Byte),
OUT_AX(Byte),
OUT_ALDX,
OUT_AXDX,
// INT
INT(Byte),
// Flag Manipulation
CLC,
STC,
CLI,
STI,
CLD,
STD,
// Repeat prefix
REPNZ,
REPZ,
}
impl fmt::Display for Mnemonic {