graph LR
Encoder_Definition_Processor["Encoder Definition Processor"]
Encoder_Function_Generator["Encoder Function Generator"]
Nonterminal_Function_Generator["Nonterminal Function Generator"]
Argument_Validation_Generator["Argument Validation Generator"]
Encoder_Definition_Processor -- "delegates tasks to" --> Encoder_Function_Generator
Encoder_Definition_Processor -- "delegates tasks to" --> Nonterminal_Function_Generator
Argument_Validation_Generator -- "produces code for" --> Encoder_Function_Generator
The Encoder Logic Generation subsystem is responsible for transforming high-level instruction definitions into low-level C/C++ code for the XED instruction encoder. It focuses on generating encoding functions, implementing argument validation, and creating reusable nonterminal patterns.
Parses high-level encoder/decoder definition files, manages encoding rules, and orchestrates the overall code generation process. It acts as the primary data input and control flow component for the subsystem.
Related Classes/Methods:
Generates the specific C/C++ code for individual instruction encoding functions. This includes handling operand types, prefixes, opcode emission, and integrating validation logic.
Related Classes/Methods:
Creates C/C++ functions that represent reusable nonterminal patterns or decision points within the overall encoding logic. These functions encapsulate common encoding sequences or logic branches, promoting code reuse.
Related Classes/Methods:
Generates C/C++ functions specifically for validating arguments during the instruction encoding process. This ensures that input operands conform to expected types and constraints, enhancing the robustness of the generated encoder.
Related Classes/Methods: