Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        protected void StoreFloatValue(CPUx86 cpu, SimOperand operand, double value, int size)
        {
            var val = new FloatingValue()
            {
                Low = value
            };

            StoreFloatValue(cpu, operand, val, size);
        }
Esempio n. 3
0
 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);
     }
 }
Esempio n. 4
0
        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}");
        }
Esempio n. 5
0
        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 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);
     }
 }
        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 void StoreFloatValue(CPUx86 cpu, SimOperand operand, double value, int size)
 {
     var val = new FloatingValue()
     {
         Low = value
     };
     StoreFloatValue(cpu, operand, val, 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();
        }