Skip to content
  • huangs's avatar
    [Courgette] Reduce AssemblyProgram to reduce Courgette-apply RAM floor and disk churn. · 88451332
    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