private void WriteValue(BigInteger value, OpcodeParameter writeParameter) { if (writeParameter.Mode == AddressingMode.Position) { EnsureMemoryCapacity((int)writeParameter.Value); Program[(int)writeParameter.Value] = value; } else if (writeParameter.Mode == AddressingMode.Relative) { EnsureMemoryCapacity((int)writeParameter.Value + RelativeBase); Program[(int)writeParameter.Value + RelativeBase] = value; } }
private int ReadValue(OpcodeParameter readParameter) { if (readParameter.Mode == AddressingMode.Immediate) { return(readParameter.Value); } else if (readParameter.Mode == AddressingMode.Position) { return(Program[readParameter.Value]); } throw new NotSupportedException(); }
private BigInteger ReadValue(OpcodeParameter readParameter) { if (readParameter.Mode == AddressingMode.Immediate) { return(readParameter.Value); } else if (readParameter.Mode == AddressingMode.Position) { EnsureMemoryCapacity((int)readParameter.Value); return(Program[(int)readParameter.Value]); } else if (readParameter.Mode == AddressingMode.Relative) { EnsureMemoryCapacity((int)readParameter.Value + RelativeBase); return(Program[(int)readParameter.Value + RelativeBase]); } throw new NotSupportedException(); }