Beispiel #1
0
 public VectorWorkItem(IScanner scanner, Program program, ImageMapVectorTable table, Procedure proc)
     : base()
 {
     this.scanner = scanner;
     this.program = program;
     this.Table = table;
     this.proc = proc;
     this.vectorUses = new Dictionary<Address, VectorUse>();
 }
Beispiel #2
0
        public void EnqueueVectorTable(Address addrFrom, Address addrTable, PrimitiveType elemSize, ushort segBase, bool calltable, Procedure proc, ProcessorState state)
        {
            ImageMapVectorTable table;
            if (vectors.TryGetValue(addrTable, out table))
                return;

            table = new ImageMapVectorTable(addrTable, calltable);
            var wi = new VectorWorkItem(this, program, table, proc);
            wi.State = state.Clone();
            wi.Stride = elemSize;
            wi.SegBase = segBase;
            wi.Table = table;
            wi.AddrFrom = addrFrom;

            imageMap.AddItem(addrTable, table);
            vectors[addrTable] = table;
            queue.Enqueue(PriorityVector, wi);
        }