using System; using System.Collections.Generic; using System.Linq; using System.Text; using BizHawk.Emulation.Common; namespace BizHawk.Emulation.Cores.Nintendo.GBA { public class ArmV4Disassembler : VerifiedDisassembler { public override IEnumerable AvailableCpus { get { return new[] { "ARM v4", "ARM v4 (Thumb)" }; } } public override string PCRegisterName { get { return "R15"; } } public override string Disassemble(MemoryDomain m, uint addr, out int length) { if (_cpu == "ARM v4 (Thumb)") { addr &= unchecked((uint)~1); int op = m.PeekByte((int)addr) | m.PeekByte((int)addr + 1) << 8; string ret = Emulation.Cores.Components.ARM.Darm.DisassembleStuff(addr | 1, (uint)op); length = 2; return ret; } else { addr &= unchecked((uint)~3); int op = m.PeekByte((int)addr) | m.PeekByte((int)addr + 1) << 8 | m.PeekByte((int)addr + 2) << 16 | m.PeekByte((int)addr + 3) << 24; string ret = Emulation.Cores.Components.ARM.Darm.DisassembleStuff(addr, (uint)op); length = 4; return ret; } } } }