From b611eebc5cfe1fe3ff4554acd90146da5dd8ce71 Mon Sep 17 00:00:00 2001 From: wtfsck Date: Wed, 22 Jun 2022 22:09:47 +0200 Subject: [PATCH] Store regs in `int` and return only low 16 bits (opcode bits) --- .../icedland/iced/x86/RegisterInfo.java | 21 +++++++------------ .../icedland/iced/x86/info/OpCodeInfo.java | 2 +- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/src/java/iced-x86/src/main/java/com/github/icedland/iced/x86/RegisterInfo.java b/src/java/iced-x86/src/main/java/com/github/icedland/iced/x86/RegisterInfo.java index 82c7f0f8d..8af5b5ad2 100644 --- a/src/java/iced-x86/src/main/java/com/github/icedland/iced/x86/RegisterInfo.java +++ b/src/java/iced-x86/src/main/java/com/github/icedland/iced/x86/RegisterInfo.java @@ -10,10 +10,10 @@ import com.github.icedland.iced.x86.internal.IcedConstants; */ public final class RegisterInfo { static final RegisterInfo[] infos = createRegisterInfos(); - private final byte register; - private final byte baseRegister; - private final byte fullRegister; - private final short size; + private final int register; + private final int baseRegister; + private final int fullRegister; + private final int size; private static RegisterInfo[] createRegisterInfos() { RegisterInfo[] regInfos = new RegisterInfo[IcedConstants.REGISTER_ENUM_COUNT]; @@ -117,14 +117,9 @@ public final class RegisterInfo { } private RegisterInfo(int register, int baseRegister, int fullRegister, int size) { - assert baseRegister <= register : baseRegister; - assert register >= 0 && register <= 0xFF : register; - this.register = (byte)register; - assert baseRegister >= 0 && baseRegister <= 0xFF : baseRegister; - this.baseRegister = (byte)baseRegister; - assert fullRegister >= 0 && fullRegister <= 0xFF : fullRegister; - this.fullRegister = (byte)fullRegister; - assert size >= 0 && size <= 0xFFFF : size; - this.size = (short)size; + this.register = register; + this.baseRegister = baseRegister; + this.fullRegister = fullRegister; + this.size = size; } } diff --git a/src/java/iced-x86/src/main/java/com/github/icedland/iced/x86/info/OpCodeInfo.java b/src/java/iced-x86/src/main/java/com/github/icedland/iced/x86/info/OpCodeInfo.java index 201601a28..ec8db8828 100644 --- a/src/java/iced-x86/src/main/java/com/github/icedland/iced/x86/info/OpCodeInfo.java +++ b/src/java/iced-x86/src/main/java/com/github/icedland/iced/x86/info/OpCodeInfo.java @@ -1126,7 +1126,7 @@ public final class OpCodeInfo { * ({@link Code#SUB_R8_RM8}, {@link Code#CVTPI2PS_XMM_MMM64}, etc). */ public int getOpCode() { - return encFlags2 >>> EncFlags2.OP_CODE_SHIFT; + return (encFlags2 >>> EncFlags2.OP_CODE_SHIFT) & 0xFFFF; } /**