示例#1
0
        public static void PerformRegionOptimize(ROM realRom, Region region, FixConfig config)
        {
            // This is fake rom but it works anyways, just more convenient
            // Want to be safe with overwriting the whole display list
            ROM fakeRom = new ROM(region.data);
            RegionOptimizeState state = new RegionOptimizeState(config);

            DisplayListRegion dlRegion = (DisplayListRegion)region;

            byte curCmdIndex;

            do
            {
                curCmdIndex = fakeRom.Read8();
                OptimizeParserCmd func = optimizeParser[curCmdIndex];
                func(fakeRom, dlRegion, state);
                fakeRom.AddOffset(8);
            }while (fakeRom.offset < region.length);

            // Now write data to real rom + trimming
            // bzero
            fakeRom.offset = 0;
            realRom.PushOffset(region.romStart);
            {
                do
                {
                    realRom.Write64(0x0101010101010101);
                    realRom.AddOffset(8);
                    fakeRom.AddOffset(8);
                } while (fakeRom.offset < region.length);
            }
            realRom.PopOffset();

            fakeRom.offset = 0;
            realRom.PushOffset(region.romStart);
            {
                int start = region.romStart;
                do
                {
                    Int64 cmd = fakeRom.Read64();
                    fakeRom.AddOffset(8);

                    if (config.trimNOPs && cmd == 0 && dlRegion.isUnusedTrimmingAllowed)
                    {
                        continue;
                    }

                    realRom.Write64((ulong)cmd);
                    realRom.AddOffset(8);
                } while (fakeRom.offset < region.length);

                region.length = realRom.offset - start;
                region.data   = new byte[region.length];
                realRom.ReadData(region.romStart, region.length, region.data);
            }
            realRom.PopOffset();
        }
示例#2
0
        public RetransmissorBMF(DadosGlobais dadosGlobais)
        {
            this.dadosGlobais = dadosGlobais;
            this.epService    = dadosGlobais.EpService;
            this.parametros   = dadosGlobais.Parametros;
            this.filaFeeder   = dadosGlobais.getFilaFeeder();
            this._config      = parametros.BMFMarketDataConfig;

            filaMensagensRetransmissorBMF = new LinkedBlockingQueue <string>();
            filaMensagensFIXInstantaneo   = new LinkedBlockingQueue <MarketDataSnapshotFullRefresh>();
            filaMensagensFIXIncremental   = new LinkedBlockingQueue <MarketDataIncrementalRefresh>();
            return;
        }
示例#3
0
            public RegionOptimizeState(FixConfig config)
            {
                last04Cmd   = 0;
                lastB6Cmd   = 0;
                lastB7Cmd   = 0;
                lastB9Cmd   = 0;
                lastBACmd   = 0;
                lastBCCmd   = 0;
                lastF8Cmd   = 0;
                lastFBCmd   = 0;
                this.config = config;

                prevF2cmdAddr = 0;
                prevFDcmdAddr = 0;
            }
示例#4
0
        public static void PerformRegionFix(ROM rom, Region region, FixConfig config)
        {
            RegionFixState    state    = new RegionFixState(config);
            DisplayListRegion dlRegion = (DisplayListRegion)region;

            rom.PushOffset(region.romStart);
            byte curCmdIndex;

            do
            {
                curCmdIndex = rom.Read8();
                FixParseCmd func = fixParser[curCmdIndex];
                func(rom, dlRegion, state);
                rom.AddOffset(8);
            }while (rom.offset < region.romStart + region.length);
            rom.PopOffset();
            rom.ReadData(region.romStart, region.length, region.data);
        }
示例#5
0
 public RegionFixState(FixConfig config)
 {
     FCCountFixed = 0;
     this.config  = config;
 }