本文整理汇总了C#中IMemory类的典型用法代码示例。如果您正苦于以下问题:C# IMemory类的具体用法?C# IMemory怎么用?C# IMemory使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
IMemory类属于命名空间,在下文中一共展示了IMemory类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DBExit
public DBExit(IAOF _AOF, IMemory _Memory)
{
AOF = _AOF;
Memory = _Memory;
exit();
}
示例2: InternalExecute
protected override void InternalExecute(CpuState cpuState, IMemory memory, byte arg, Action<byte> write, ref int cycles)
{
bool carry = cpuState.IsFlagSet(CpuState.Flags.Carry);
cpuState.SetFlag(CpuState.Flags.Carry, arg & 0x80);
arg <<= 1;
if (carry)
{
arg |= 1;
}
write(arg);
cpuState.SetNegativeFlag(arg);
cpuState.SetZeroFlag(arg);
switch (Variants[memory[cpuState.Pc]])
{
case AddressingMode.Accumulator:
cycles = 2;
break;
case AddressingMode.ZeroPage:
cycles = 5;
break;
case AddressingMode.ZeroPageXIndexed:
cycles = 6;
break;
case AddressingMode.Absolute:
cycles = 6;
break;
case AddressingMode.AbsoluteX:
cycles = 7;
break;
}
}
示例3: Alu
public Alu(IMemory memory, IRegisterFile registerFile, ICpuStack cpuStack, ILookupTables lookupTables)
{
_memory = memory;
_lookupTables = lookupTables;
_registerFile = registerFile;
_cpuStack = cpuStack;
}
示例4: PpuMap
public PpuMap(IMemory ram, IMemory chr, VRAMLayout layout)
{
m_ram = ram;
m_chr = chr;
m_palette = new Ram(0xFF);
m_layout = layout;
}
示例5: InternalExecute
protected override void InternalExecute(CpuState cpuState, IMemory memory, byte arg, Action<byte> write, ref int cycles)
{
cpuState.A = cpuState.PopStack(memory);
cpuState.SetNegativeFlag(cpuState.A);
cpuState.SetZeroFlag(cpuState.A);
cycles = 4;
}
示例6: DumpAsText
public static string DumpAsText(IMemory memory)
{
var dumpStringBuilder = new StringBuilder(299320);
dumpStringBuilder.AppendLine(" 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF");
var ip = 0;
while (ip < memory.Size)
{
int rowStartPointer = ip;
dumpStringBuilder.Append(ip.ToString("X4"));
dumpStringBuilder.Append(" ");
for (int columnIndex = 0; columnIndex < 0x10; columnIndex++)
{
dumpStringBuilder.Append(memory.Raw[rowStartPointer].ToString("X2"));
dumpStringBuilder.Append(' ');
rowStartPointer++;
}
dumpStringBuilder.Append(' ');
rowStartPointer = ip;
for (int columnIndex = 0; columnIndex < 0x10; columnIndex++)
{
dumpStringBuilder.Append(_codePageMap[memory.Raw[rowStartPointer]]);
rowStartPointer++;
}
ip += 0x10;
dumpStringBuilder.AppendLine();
}
return dumpStringBuilder.ToString();
}
示例7: InternalExecute
protected override void InternalExecute(CpuState cpuState, IMemory memory, byte arg, Action<byte> write, ref int cycles)
{
var res = (byte)((cpuState.X - 1) & 0xFF);
cpuState.X = res;
cpuState.SetNegativeFlag(res);
cpuState.SetZeroFlag(res);
}
示例8: InternalExecute
protected override void InternalExecute(CpuState cpuState, IMemory memory, byte arg, Action<byte> write, ref int cycles)
{
ushort result = arg;
result <<= 1;
var byteResult = (byte) (result & 0xFF);
write(byteResult);
cpuState.SetNegativeFlag(byteResult);
cpuState.SetZeroFlag(byteResult);
cpuState.SetFlag(CpuState.Flags.Carry, result & 0xFF00);
switch (Variants[memory[cpuState.Pc]])
{
case AddressingMode.Accumulator:
cycles = 2;
break;
case AddressingMode.ZeroPage:
cycles = 5;
break;
case AddressingMode.ZeroPageXIndexed:
cycles = 6;
break;
case AddressingMode.Absolute:
cycles = 6;
break;
case AddressingMode.AbsoluteX:
cycles = 7;
break;
}
}
示例9: Patch
public Patch(IMemory memory, IntPtr targetAddress, byte[] replaceWith)
{
_protector = new MemoryPageProtector(new Win32Implementation(), targetAddress, (IntPtr)replaceWith.Length);
_memory = memory;
TargetAddress = targetAddress;
_replaceWith = replaceWith;
}
示例10: Cpu
public Cpu(IMemory memory, IInput input, IOutput output)
{
_memory = memory;
In = input;
Out = output;
Registers = new byte[16];
Commands = new Dictionary<byte, Command>
{
{0x01, new IncCommand(this)},
{0x02, new DecCommand(this)},
{0x03, new MovCommand(this)},
{0x04, new MovcCommand(this)},
{0x05, new LslCommand(this)},
{0x06, new LsrCommand(this)},
{0x07, new JmpCommand(this)},
{0x0A, new JfeCommand(this)},
{0x0B, new RetCommand(this)},
{0x0C, new AddCommand(this)},
{0x0D, new SubCommand(this)},
{0x0E, new XorCommand(this)},
{0x0F, new OrCommand(this)},
{0x10, new InCommand(this)},
{0x11, new OutCommand(this)}
};
}
示例11: Execute
public int Execute(CpuState cpuState, IMemory memory)
{
// Addresses are relative to the beginning of the next instruction not
// the beginning of this one, so we'll need to advance the program counter.
cpuState.Pc += 2;
if (ShouldBranch(cpuState, memory))
{
var offset = memory[cpuState.Pc - 1];
ushort newPc;
if ((offset & 0x80) != 0)
{
newPc = (ushort) (cpuState.Pc - (0x100 - offset));
}
else
{
newPc = (ushort)(cpuState.Pc + offset);
}
int cycles = 3;
if ((newPc & 0xFF00) != (cpuState.Pc & 0xFF00))
{
// Extra cycle if the relative branch occurs to cross a page boundary
++cycles;
}
cpuState.Pc = newPc;
return cycles;
}
return 2;
}
示例12: InternalExecute
protected override void InternalExecute(CpuState cpuState, IMemory memory, byte arg, ref int cycles)
{
cpuState.X = arg;
cpuState.SetNegativeFlag(arg);
cpuState.SetZeroFlag(arg);
}
示例13: Execute
public int Execute(CpuState cpuState, IMemory memory)
{
throw new Exception("die");
cpuState.Interrupt(0xFFFE, memory);
return 7;
}
示例14: Int3Hook
public unsafe Int3Hook(IMemory memory, IntPtr targetAddress, IntPtr hookAddress)
: base(memory, targetAddress, new[] { (byte)OpCode.Int3 })
{
_hookAddress = hookAddress;
_notToBeGCed = VectoredHandler;
_handler = AddVectoredExceptionHandler(0, _notToBeGCed);
}
示例15: FrameBuffer8bpp
/// <summary>
/// Initializes a new instance of the <see cref="FrameBuffer8bpp"/> class.
/// </summary>
/// <param name="memory">The memory.</param>
/// <param name="width">The width.</param>
/// <param name="height">The height.</param>
/// <param name="offset">The offset.</param>
/// <param name="bytesPerLine">The bytes per line.</param>
public FrameBuffer8bpp(IMemory memory, uint width, uint height, uint offset, uint bytesPerLine)
{
this.memory = memory;
this.width = width;
this.height = height;
this.offset = offset;
this.bytesPerLine = bytesPerLine;
}