-
huangs authored
This is the main CL of the AssemblyProgram reduction effort, which makes Disassembler emit instructions directly to EncodedProgram, and bypass AssemblyProgram, which becomes a holder of LabelManager and Label Annotation. Another big change is that Disassembler usage is exposed to high-level flows (rather than having it hidden inside ParseDetectedExecutable*()). Details: - Remove ParseDetectedExecutable*() and expose DetectDisassembler(). - AssemblyProgram: Remove: - Entire Instruction class hierarchy. - Allocated instruction in the heap (including preallocated DEFBYTE instances). - enum OP {}, which duplicates EncodedProgram::OP. - InstructionVector of pointers, which takes 100's of MB on disk. - Encode() interface. - AssemblyProgram: Add: - AnnotateLabels() to generate Label Annotation directly from a generator (injected by Disassembler), using LabelReceptor template class for counting and stor...
88451332