protected FloatingValue ReadFloat(CPUx86 cpu, uint address, int size) { if (size == 128) { return(new FloatingValue() { ULow = cpu.Read64(address), UHigh = cpu.Read64(address + 0x8) }); } else if (size == 64) { return(new FloatingValue() { ULow = cpu.Read64(address) }); } else if (size == 32) { var val = new FloatingValue(); var b = BitConverter.GetBytes(cpu.Read32(address)); val.LowF = BitConverter.ToSingle(b, 0); return(val); } throw new SimCPUException(); }
protected void StoreFloatValue(CPUx86 cpu, SimOperand operand, double value, int size) { var val = new FloatingValue() { Low = value }; StoreFloatValue(cpu, operand, val, size); }
protected void WriteFloat(CPUx86 cpu, uint address, FloatingValue value, int size) { if (size == 128) { cpu.Write64(address, value.ULow); cpu.Write64(address + 0x08, value.UHigh); } else if (size == 64) { cpu.Write64(address, value.ULow); } else if (size == 32) { var b = BitConverter.GetBytes(value.LowF); uint val = BitConverter.ToUInt32(b, 0); cpu.Write32(address, val); } }
public void ShowFloatingCoinAmount(float gainedAmount) { if (gainedAmount <= 0) { return; } FloatingValue fValue = moneyGainSlots.FirstOrDefault(e => !e.IsFloating); if (fValue == null) { GameObject go = GameObject.Instantiate(_pfMoneyGainText, _moneyGainPanel, false); moneyGainSlots.Add(go.GetComponent <FloatingValue>()); fValue = moneyGainSlots.Last(); } fValue.StartFloating($"{gainedAmount} {Constants.TMP_SPRITE_COIN}"); }
protected void StoreFloatValue(CPUx86 cpu, SimOperand operand, FloatingValue value, int size) { Debug.Assert(!operand.IsImmediate); if (operand.IsRegister) { var newValue = ((operand.Register) as RegisterFloatingPoint).Value; switch (size) { case 128: newValue = value; break; case 64: newValue.Low = value.Low; break; case 32: newValue.LowF = value.LowF; break; } ((operand.Register) as RegisterFloatingPoint).Value = newValue; } if (operand.IsLabel) { uint address = (uint)cpu.GetSymbol(operand.Label).Address; WriteFloat(cpu, address, value, size); } if (operand.IsMemory) { uint address = GetAddress(cpu, operand); WriteFloat(cpu, address, value, size); } }
protected FloatingValue ReadFloat(CPUx86 cpu, uint address, int size) { if (size == 128) { return new FloatingValue() { ULow = cpu.Read64(address), UHigh = cpu.Read64(address + 0x8) }; } else if (size == 64) { return new FloatingValue() { ULow = cpu.Read64(address) }; } else if (size == 32) { var val = new FloatingValue(); var b = BitConverter.GetBytes(cpu.Read32(address)); val.LowF = BitConverter.ToSingle(b, 0); return val; } throw new SimCPUException(); }