diff --git a/X86Disassembler/X86/ModRMDecoder.cs b/X86Disassembler/X86/ModRMDecoder.cs
index 99ee19a..ff7598f 100644
--- a/X86Disassembler/X86/ModRMDecoder.cs
+++ b/X86Disassembler/X86/ModRMDecoder.cs
@@ -22,8 +22,6 @@ public class ModRMDecoder
_decoder = decoder;
_sibDecoder = new SIBDecoder(decoder);
}
-
- // These methods have been moved to the RegisterMapper class
///
/// Decodes a ModR/M byte to get the operand
@@ -32,22 +30,16 @@ public class ModRMDecoder
/// The r/m field as RegisterIndex
/// True if the operand is 64-bit
/// The operand object
- public Operand DecodeModRM(byte mod, RegisterIndex rmIndex, bool is64Bit)
- {
- return DecodeModRMInternal(mod, rmIndex, is64Bit ? 64 : 32);
- }
-
+ public Operand DecodeModRM(byte mod, RegisterIndex rmIndex, bool is64Bit) => DecodeModRMInternal(mod, rmIndex, is64Bit ? 64 : 32);
+
///
/// Decodes a ModR/M byte to get an 8-bit operand
///
/// The mod field (2 bits)
/// The r/m field as RegisterIndex
/// The 8-bit operand object
- public Operand DecodeModRM8(byte mod, RegisterIndex rmIndex)
- {
- return DecodeModRMInternal(mod, rmIndex, 8);
- }
-
+ public Operand DecodeModRM8(byte mod, RegisterIndex rmIndex) => DecodeModRMInternal(mod, rmIndex, 8);
+
///
/// Internal implementation for decoding a ModR/M byte to get an operand with specific size
///
@@ -57,7 +49,6 @@ public class ModRMDecoder
/// The operand object
private Operand DecodeModRMInternal(byte mod, RegisterIndex rmIndex, int operandSize)
{
-
switch (mod)
{
case 0: // [reg] or disp32
@@ -81,7 +72,7 @@ public class ModRMDecoder
if (_decoder.CanReadByte())
{
byte sib = _decoder.ReadByte();
- return DecodeSIB(sib, 0, operandSize);
+ return _sibDecoder.DecodeSIB(sib, 0, operandSize);
}
// Fallback for incomplete data
@@ -99,7 +90,7 @@ public class ModRMDecoder
{
byte sib = _decoder.ReadByte();
sbyte disp8 = (sbyte)(_decoder.CanReadByte() ? _decoder.ReadByte() : 0);
- return DecodeSIB(sib, (uint)disp8, operandSize);
+ return _sibDecoder.DecodeSIB(sib, (uint)disp8, operandSize);
}
// Fallback for incomplete data
@@ -133,7 +124,7 @@ public class ModRMDecoder
{
byte sib = _decoder.ReadByte();
uint disp32 = _decoder.ReadUInt32();
- return DecodeSIB(sib, disp32, operandSize);
+ return _sibDecoder.DecodeSIB(sib, disp32, operandSize);
}
// Fallback for incomplete data
@@ -197,28 +188,19 @@ public class ModRMDecoder
/// Reads and decodes a ModR/M byte for standard 32-bit operands
///
/// A tuple containing the mod, reg, rm fields and the decoded operand
- public (byte mod, RegisterIndex reg, RegisterIndex rm, Operand operand) ReadModRM()
- {
- return ReadModRMInternal(false);
- }
+ public (byte mod, RegisterIndex reg, RegisterIndex rm, Operand operand) ReadModRM() => ReadModRMInternal(false);
///
/// Reads and decodes a ModR/M byte for 64-bit operands
///
/// A tuple containing the mod, reg, rm fields and the decoded operand
- public (byte mod, RegisterIndex reg, RegisterIndex rm, Operand operand) ReadModRM64()
- {
- return ReadModRMInternal(true);
- }
+ public (byte mod, RegisterIndex reg, RegisterIndex rm, Operand operand) ReadModRM64() => ReadModRMInternal(true);
///
/// Reads and decodes a ModR/M byte for 8-bit operands
///
/// A tuple containing the mod, reg, rm fields and the decoded operand
- public (byte mod, RegisterIndex8 reg, RegisterIndex8 rm, Operand operand) ReadModRM8()
- {
- return ReadModRM8Internal();
- }
+ public (byte mod, RegisterIndex8 reg, RegisterIndex8 rm, Operand operand) ReadModRM8() => ReadModRM8Internal();
///
/// Reads and decodes a ModR/M byte for 16-bit operands
@@ -331,38 +313,4 @@ public class ModRMDecoder
return (mod, reg, rm, operand);
}
-
- ///
- /// Decodes a SIB byte
- ///
- /// The SIB byte
- /// The displacement value
- /// The size of the operand in bits (8, 16, 32, or 64)
- /// The decoded SIB operand
- private Operand DecodeSIB(byte sib, uint displacement, int operandSize)
- {
- // Delegate to the SIBDecoder
- return _sibDecoder.DecodeSIB(sib, displacement, operandSize);
- }
-
- ///
- /// Gets the register name based on the register index and size
- ///
- /// The register index as RegisterIndex enum
- /// The register size (16 or 32 bits)
- /// The register name
- public static string GetRegisterName(RegisterIndex regIndex, int size)
- {
- return RegisterMapper.GetRegisterName(regIndex, size);
- }
-
- ///
- /// Gets the 8-bit register name based on the RegisterIndex8 enum value
- ///
- /// The register index as RegisterIndex8 enum
- /// The 8-bit register name
- public static string GetRegisterName(RegisterIndex8 regIndex8)
- {
- return RegisterMapper.GetRegisterName(regIndex8);
- }
}
\ No newline at end of file
diff --git a/X86Disassembler/X86/Operands/BaseRegisterMemoryOperand.cs b/X86Disassembler/X86/Operands/BaseRegisterMemoryOperand.cs
index 5dff8ec..87b0fa2 100644
--- a/X86Disassembler/X86/Operands/BaseRegisterMemoryOperand.cs
+++ b/X86Disassembler/X86/Operands/BaseRegisterMemoryOperand.cs
@@ -28,7 +28,7 @@ public class BaseRegisterMemoryOperand : MemoryOperand
///
public override string ToString()
{
- var registerName = ModRMDecoder.GetRegisterName(BaseRegister, 32);
+ var registerName = RegisterMapper.GetRegisterName(BaseRegister, 32);
return $"{GetSizePrefix()}[{registerName}]";
}
}
diff --git a/X86Disassembler/X86/Operands/DisplacementMemoryOperand.cs b/X86Disassembler/X86/Operands/DisplacementMemoryOperand.cs
index fb99f55..b17e829 100644
--- a/X86Disassembler/X86/Operands/DisplacementMemoryOperand.cs
+++ b/X86Disassembler/X86/Operands/DisplacementMemoryOperand.cs
@@ -36,7 +36,7 @@ public class DisplacementMemoryOperand : MemoryOperand
public override string ToString()
{
string sign = Displacement >= 0 ? "+" : "-";
- var registerName = ModRMDecoder.GetRegisterName(BaseRegister, 32);
+ var registerName = RegisterMapper.GetRegisterName(BaseRegister, 32);
string formattedDisplacement = $"0x{Displacement:X2}";
diff --git a/X86Disassembler/X86/Operands/Register8Operand.cs b/X86Disassembler/X86/Operands/Register8Operand.cs
index 625c036..54b3f08 100644
--- a/X86Disassembler/X86/Operands/Register8Operand.cs
+++ b/X86Disassembler/X86/Operands/Register8Operand.cs
@@ -26,6 +26,6 @@ public class Register8Operand : Operand
///
public override string ToString()
{
- return ModRMDecoder.GetRegisterName(Register);
+ return RegisterMapper.GetRegisterName(Register);
}
}
diff --git a/X86Disassembler/X86/Operands/RegisterOperand.cs b/X86Disassembler/X86/Operands/RegisterOperand.cs
index bc335de..e83e396 100644
--- a/X86Disassembler/X86/Operands/RegisterOperand.cs
+++ b/X86Disassembler/X86/Operands/RegisterOperand.cs
@@ -27,6 +27,6 @@ public class RegisterOperand : Operand
///
public override string ToString()
{
- return ModRMDecoder.GetRegisterName(Register, Size);
+ return RegisterMapper.GetRegisterName(Register, Size);
}
}
diff --git a/X86Disassembler/X86/Operands/ScaledIndexMemoryOperand.cs b/X86Disassembler/X86/Operands/ScaledIndexMemoryOperand.cs
index 47dffd1..db832ff 100644
--- a/X86Disassembler/X86/Operands/ScaledIndexMemoryOperand.cs
+++ b/X86Disassembler/X86/Operands/ScaledIndexMemoryOperand.cs
@@ -50,8 +50,8 @@ public class ScaledIndexMemoryOperand : MemoryOperand
///
public override string ToString()
{
- string baseRegPart = BaseRegister != null ? $"{ModRMDecoder.GetRegisterName(BaseRegister.Value, 32)}+" : "";
- string indexPart = $"{ModRMDecoder.GetRegisterName(IndexRegister, 32)}*{Scale}";
+ string baseRegPart = BaseRegister != null ? $"{RegisterMapper.GetRegisterName(BaseRegister.Value, 32)}+" : "";
+ string indexPart = $"{RegisterMapper.GetRegisterName(IndexRegister, 32)}*{Scale}";
string dispPart = "";
if (Displacement != 0)