From bd9ac0fdaadd233e778a872c48f7f628b5a68c93 Mon Sep 17 00:00:00 2001 From: merry <git@mary.rs> Date: Fri, 4 Mar 2022 22:05:08 +0000 Subject: T32: Implement B, B.cond, BL, BLX (#3155) * Decoders: Make IsThumb a function of OpCode32 * OpCode32: Fix GetPc * T32: Implement B, B.cond, BL, BLX * rm usings --- ARMeilleure/Instructions/InstEmitAluHelper.cs | 2 +- ARMeilleure/Instructions/InstEmitFlow32.cs | 4 ++-- ARMeilleure/Instructions/InstEmitHelper.cs | 5 ----- 3 files changed, 3 insertions(+), 8 deletions(-) (limited to 'ARMeilleure/Instructions') diff --git a/ARMeilleure/Instructions/InstEmitAluHelper.cs b/ARMeilleure/Instructions/InstEmitAluHelper.cs index 8bf53ed4..67d9e915 100644 --- a/ARMeilleure/Instructions/InstEmitAluHelper.cs +++ b/ARMeilleure/Instructions/InstEmitAluHelper.cs @@ -128,7 +128,7 @@ namespace ARMeilleure.Instructions { Debug.Assert(value.Type == OperandType.I32); - if (IsThumb(context.CurrOp)) + if (((OpCode32)context.CurrOp).IsThumb()) { bool isReturn = IsA32Return(context); if (!isReturn) diff --git a/ARMeilleure/Instructions/InstEmitFlow32.cs b/ARMeilleure/Instructions/InstEmitFlow32.cs index 2b052505..064aeb36 100644 --- a/ARMeilleure/Instructions/InstEmitFlow32.cs +++ b/ARMeilleure/Instructions/InstEmitFlow32.cs @@ -34,7 +34,7 @@ namespace ARMeilleure.Instructions uint pc = op.GetPc(); - bool isThumb = IsThumb(context.CurrOp); + bool isThumb = ((OpCode32)context.CurrOp).IsThumb(); uint currentPc = isThumb ? pc | 1 @@ -61,7 +61,7 @@ namespace ARMeilleure.Instructions Operand addr = context.Copy(GetIntA32(context, op.Rm)); Operand bitOne = context.BitwiseAnd(addr, Const(1)); - bool isThumb = IsThumb(context.CurrOp); + bool isThumb = ((OpCode32)context.CurrOp).IsThumb(); uint currentPc = isThumb ? (pc - 2) | 1 diff --git a/ARMeilleure/Instructions/InstEmitHelper.cs b/ARMeilleure/Instructions/InstEmitHelper.cs index 773f6bd6..a22bb3fb 100644 --- a/ARMeilleure/Instructions/InstEmitHelper.cs +++ b/ARMeilleure/Instructions/InstEmitHelper.cs @@ -10,11 +10,6 @@ namespace ARMeilleure.Instructions { static class InstEmitHelper { - public static bool IsThumb(OpCode op) - { - return op is OpCodeT16 || op is OpCodeT32; - } - public static Operand GetExtendedM(ArmEmitterContext context, int rm, IntType type) { Operand value = GetIntOrZR(context, rm); -- cgit v1.2.3-70-g09d2