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(); }
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; }
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; }
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); }
public RegionFixState(FixConfig config) { FCCountFixed = 0; this.config = config; }