lua: emu.disassemble(uint pc, string name = "")

This commit is contained in:
feos 2016-02-21 18:13:45 +03:00
parent a1f3b3d735
commit 78f20510e5
1 changed files with 37 additions and 0 deletions
BizHawk.Client.Common/lua

View File

@ -25,6 +25,12 @@ namespace BizHawk.Client.Common
[OptionalService]
public IDebuggable DebuggableCore { get; set; }
[OptionalService]
public IDisassemblable DisassemblableCore { get; set; }
[OptionalService]
private IMemoryDomains MemoryDomains { get; set; }
[OptionalService]
public IInputPollable InputPollableCore { get; set; }
@ -66,6 +72,37 @@ namespace BizHawk.Client.Common
return Emulator.Frame;
}
[LuaMethodAttributes(
"disassemble",
"Returns the disassembly object (disasm string and length int) for the given PC address. Uses System Bus domain if no domain name provided"
)]
public object Disassemble(uint pc, string name = "")
{
try
{
if (DisassemblableCore == null)
{
throw new NotImplementedException();
}
int l;
MemoryDomain domain = MemoryDomains.SystemBus;
if (!string.IsNullOrEmpty(name))
domain = MemoryDomains[name];
var d = DisassemblableCore.Disassemble(domain, pc, out l);
return new { disasm = d, length = l };
}
catch (NotImplementedException)
{
Log(string.Format(
"Error: {0} does not yet implement disassemble()",
Emulator.Attributes().CoreName));
return null;
}
}
// TODO: what about 64 bit registers?
[LuaMethodAttributes(
"getregister",