Ejemplo n.º 1
0
        public NetworkHandler()
        {
            networkObjects = new Dictionary<string, NetObj>();
            updating = false;

            receivedBytes = new byte[INITIAL_BUFFER_SIZE];
            reliableInOrderMsgs = new List<byte>();
            unreliableInOrderMsgs = new List<byte>();
            reliableUnOrderMsgs = new List<byte>();
            unreliableUnOrderMsgs = new List<byte>();

            transferSize = TransferSize.UShort;
            networkObjSize = sizeof(ushort);
            switch (transferSize)
            {
                case TransferSize.Byte:
                    maxNetworkObjSize = byte.MaxValue;
                    break;
                case TransferSize.UShort:
                    maxNetworkObjSize = ushort.MaxValue;
                    break;
                case TransferSize.Int:
                    maxNetworkObjSize = int.MaxValue;
                    break;
            }
            started = false;
        }
Ejemplo n.º 2
0
        public SocketNetworkHandler()
        {
            networkObjects = new Dictionary <string, NetObj>();
            updating       = false;

            receivedBytes = new byte[INITIAL_BUFFER_SIZE];

            transferSize   = TransferSize.UShort;
            networkObjSize = sizeof(ushort);
            switch (transferSize)
            {
            case TransferSize.Byte:
                maxNetworkObjSize = byte.MaxValue;
                break;

            case TransferSize.UShort:
                maxNetworkObjSize = ushort.MaxValue;
                break;

            case TransferSize.Int:
                maxNetworkObjSize = int.MaxValue;
                break;
            }
            started = false;
        }
Ejemplo n.º 3
0
            private TransferType SizeToType(TransferSize size)
            {
                switch (size)
                {
                case TransferSize.Bits32:
                    return(TransferType.DoubleWord);

                case TransferSize.Bits16:
                    return(TransferType.Word);

                case TransferSize.Bits8:
                default:
                    return(TransferType.Byte);
                }
            }
Ejemplo n.º 4
0
            private void IssueCopy(ulong sourceAddress, ulong destinationAddress, uint size,
                                   bool incrementReadAddress, bool incrementWriteAddress, TransferSize sourceTransferType,
                                   TransferSize destinationTransferType)
            {
                var request = new Request(
                    sourceAddress,
                    destinationAddress,
                    (int)size,
                    SizeToType(sourceTransferType),
                    SizeToType(destinationTransferType),
                    incrementReadAddress,
                    incrementWriteAddress
                    );

                parent.engine.IssueCopy(request);
            }
Ejemplo n.º 5
0
        public void EmitSingleDataTransfer(ConditionCode conditionCode, Indexing indexing, OffsetDirection offsetDirection, TransferSize transferSize, WriteBack writeBack, TransferType transferType, int firstRegister, int destinationRegister, ShiftType secondShiftType, int secondRegister)
        {
            Debug.Assert(destinationRegister <= 0xF);
            Debug.Assert(firstRegister <= 0xF);
            Debug.Assert(secondRegister <= 0xF);

            uint value = 0;

            value |= (uint)(GetConditionCode(conditionCode) << 28);
            value |= (uint)(1 << 26);
            value |= (uint)(1 << 25);
            value |= (uint)((indexing == Indexing.Post ? 0 : 1) << 24);
            value |= (uint)((transferSize == TransferSize.Word ? 0 : 1) << 23);
            value |= (uint)((offsetDirection == OffsetDirection.Down ? 0 : 1) << 22);
            value |= (uint)((writeBack == WriteBack.NoWriteBack ? 0 : 1) << 21);
            value |= (uint)((transferType == TransferType.Store ? 0 : 1) << 20);
            value |= (uint)(destinationRegister << 12);
            value |= (uint)(firstRegister << 16);
            value |= (uint)(GetShiftTypeCode(secondShiftType) << 4);
            value |= (uint)secondRegister;

            Write(value);
        }
Ejemplo n.º 6
0
        public static uint EmitSingleDataTransfer(ConditionCode conditionCode, Indexing indexing, OffsetDirection offsetDirection, TransferSize transferSize, WriteBack writeBack, TransferType transferType, int firstRegister, int destinationRegister, ShiftType secondShiftType, int secondRegister)
        {
            Debug.Assert(destinationRegister <= 0xF);
            Debug.Assert(firstRegister <= 0xF);
            Debug.Assert(secondRegister <= 0xF);

            uint value = 0;

            value |= (uint)(GetConditionCode(conditionCode) << 28);
            value |= 1 << 26;
            value |= 1 << 25;
            value |= (uint)((indexing == Indexing.Post ? 0 : 1) << 24);
            value |= (uint)((transferSize == TransferSize.Word ? 0 : 1) << 23);
            value |= (uint)((offsetDirection == OffsetDirection.Down ? 0 : 1) << 22);
            value |= (uint)((writeBack == WriteBack.NoWriteBack ? 0 : 1) << 21);
            value |= (uint)((transferType == TransferType.Store ? 0 : 1) << 20);
            value |= (uint)(destinationRegister << 12);
            value |= (uint)(firstRegister << 16);
            value |= (uint)(GetShiftTypeCode(secondShiftType) << 4);
            value |= (uint)secondRegister;

            return(value);
        }
Ejemplo n.º 7
0
        public void EmitSingleDataTransfer(ConditionCode conditionCode, Indexing indexing, OffsetDirection offsetDirection, TransferSize transferSize, WriteBack writeBack, TransferType transferType, int firstRegister, int destinationRegister, uint immediate)
        {
            Debug.Assert(destinationRegister <= 0xF);
            Debug.Assert(firstRegister <= 0xF);
            Debug.Assert(immediate <= 0xFFF);

            uint value = 0;

            value |= (uint)(GetConditionCode(conditionCode) << 28);
            value |= (uint)(1 << 26);
            value |= (uint)(1 << 25);
            value |= (uint)((indexing == Indexing.Post ? 0 : 1) << 24);
            value |= (uint)((transferSize == TransferSize.Word ? 0 : 1) << 23);
            value |= (uint)((offsetDirection == OffsetDirection.Down ? 0 : 1) << 22);
            value |= (uint)((writeBack == WriteBack.NoWriteBack ? 0 : 1) << 21);
            value |= (uint)((transferType == TransferType.Store ? 0 : 1) << 20);
            value |= (uint)(destinationRegister << 12);
            value |= (uint)(firstRegister << 16);
            value |= (uint)immediate;

            Write(value);
        }