public static void Blx(AThreadState State, AMemory Memory, AOpCode OpCode, bool X) { A32OpCodeBImmAl Op = (A32OpCodeBImmAl)OpCode; if (IsConditionTrue(State, Op.Cond)) { uint Pc = GetPc(State); if (State.Thumb) { State.R14 = Pc | 1; } else { State.R14 = Pc - 4U; } if (X) { State.Thumb = !State.Thumb; } if (!State.Thumb) { Pc &= ~3U; } BranchWritePc(State, Pc + (uint)Op.Imm); } }
public static void Blx(CpuThreadState state, MemoryManager memory, OpCode64 opCode, bool x) { A32OpCodeBImmAl op = (A32OpCodeBImmAl)opCode; if (IsConditionTrue(state, op.Cond)) { uint pc = GetPc(state); if (state.Thumb) { state.R14 = pc | 1; } else { state.R14 = pc - 4U; } if (x) { state.Thumb = !state.Thumb; } if (!state.Thumb) { pc &= ~3U; } BranchWritePc(state, pc + (uint)op.Imm); } }
public static void B(AThreadState State, AMemory Memory, AOpCode OpCode) { A32OpCodeBImmAl Op = (A32OpCodeBImmAl)OpCode; if (IsConditionTrue(State, Op.Cond)) { BranchWritePc(State, GetPc(State) + (uint)Op.Imm); } }
public static void B(CpuThreadState state, MemoryManager memory, OpCode64 opCode) { A32OpCodeBImmAl op = (A32OpCodeBImmAl)opCode; if (IsConditionTrue(state, op.Cond)) { BranchWritePc(state, GetPc(state) + (uint)op.Imm); } }