From 09c84d6e914087cc397166fbd973e74daf06f7a5 Mon Sep 17 00:00:00 2001 From: merry Date: Fri, 11 Feb 2022 21:37:08 +0000 Subject: [PATCH] T16: Implement B (unconditional) --- ARMeilleure/Decoders/OpCodeT16BImm11.cs | 15 +++++++++++++++ ARMeilleure/Decoders/OpCodeTable.cs | 1 + 2 files changed, 16 insertions(+) create mode 100644 ARMeilleure/Decoders/OpCodeT16BImm11.cs diff --git a/ARMeilleure/Decoders/OpCodeT16BImm11.cs b/ARMeilleure/Decoders/OpCodeT16BImm11.cs new file mode 100644 index 000000000..2f52839de --- /dev/null +++ b/ARMeilleure/Decoders/OpCodeT16BImm11.cs @@ -0,0 +1,15 @@ +namespace ARMeilleure.Decoders +{ + class OpCodeT16BImm11 : OpCode32, IOpCode32BImm + { + public long Immediate { get; } + + public new static OpCode Create(InstDescriptor inst, ulong address, int opCode, bool inITBlock) => new OpCodeT16BImm11(inst, address, opCode, inITBlock); + + public OpCodeT16BImm11(InstDescriptor inst, ulong address, int opCode, bool inITBlock) : base(inst, address, opCode, inITBlock) + { + int imm = (opCode << 21) >> 20; + Immediate = GetPc() + imm; + } + } +} \ No newline at end of file diff --git a/ARMeilleure/Decoders/OpCodeTable.cs b/ARMeilleure/Decoders/OpCodeTable.cs index ea4e15ada..4ec67fc93 100644 --- a/ARMeilleure/Decoders/OpCodeTable.cs +++ b/ARMeilleure/Decoders/OpCodeTable.cs @@ -1041,6 +1041,7 @@ namespace ARMeilleure.Decoders SetT16("11001xxxxxxxxxxx", InstName.Ldm, InstEmit32.Ldm, OpCodeT16MemMult.Create); SetT16("1101<<