lua: emu.disassemble(uint pc, string name = "")
This commit is contained in:
parent
a1f3b3d735
commit
78f20510e5
BizHawk.Client.Common/lua
|
@ -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",
|
||||
|
|
Loading…
Reference in New Issue