m2isar.backends.etiss.instruction_utils ======================================= .. py:module:: m2isar.backends.etiss.instruction_utils .. autoapi-nested-parse:: Utility classes and functions for instruction generation. Attributes ---------- .. autoapisummary:: m2isar.backends.etiss.instruction_utils.data_type_map m2isar.backends.etiss.instruction_utils.MEM_VAL_REPL m2isar.backends.etiss.instruction_utils.FN_VAL_REPL Classes ------- .. autoapisummary:: m2isar.backends.etiss.instruction_utils.CodeString m2isar.backends.etiss.instruction_utils.MemID m2isar.backends.etiss.instruction_utils.FnID m2isar.backends.etiss.instruction_utils.CodePartsContainer m2isar.backends.etiss.instruction_utils.TransformerContext Functions --------- .. autoapisummary:: m2isar.backends.etiss.instruction_utils.actual_size Module Contents --------------- .. py:data:: data_type_map .. py:data:: MEM_VAL_REPL :value: 'mem_val_' .. py:data:: FN_VAL_REPL :value: 'fn_val_' .. py:function:: actual_size(size, min_=8, max_=128) Calculate a fitting c datatype width for any arbitrary size. .. py:class:: CodeString(code, static, size, signed, regs_affected=None, line_infos=[]) Code string object. Tracks generate C++ code and various metadata for recursive code generation. .. py:attribute:: mem_ids :type: list[MemID] .. py:attribute:: function_calls :type: list[FnID] .. py:attribute:: line_infos :type: list[LineInfo] .. py:attribute:: code .. py:attribute:: static .. py:attribute:: size .. py:attribute:: signed .. py:attribute:: regs_affected :value: None .. py:attribute:: mem_corrected :value: False .. py:attribute:: is_literal :value: False .. py:attribute:: check_trap :value: False .. py:property:: actual_size .. py:property:: needs_fn_call .. py:property:: is_mem_access .. py:property:: write_mem_ids .. py:property:: read_mem_ids .. py:method:: __str__() .. py:method:: __format__(format_spec) .. py:class:: MemID Track a memory access across recursive code generation. .. py:attribute:: mem_space :type: m2isar.metamodel.arch.Memory .. py:attribute:: mem_id :type: int .. py:attribute:: index :type: CodeString .. py:attribute:: access_size :type: int .. py:attribute:: write :type: bool :value: None .. py:class:: FnID Track a required function call across recursive code generation. .. py:attribute:: fn_call :type: m2isar.metamodel.arch.Function .. py:attribute:: fn_id :type: int .. py:attribute:: args :type: CodeString .. py:class:: CodePartsContainer Container class to encapsulate different ETISS JIT code snippet types. .. py:attribute:: pre_initial_debug_returning :type: str :value: None .. py:attribute:: initial_required :type: str :value: None .. py:attribute:: optional_middle :type: str :value: None .. py:attribute:: appended_required :type: str :value: None .. py:attribute:: appended_optional :type: str :value: None .. py:attribute:: appended_returning_required :type: str :value: None .. py:method:: generate() .. py:method:: format(mapping={}, **kwargs) .. py:class:: TransformerContext(constants: dict[str, arch.Constant], memories: dict[str, arch.Memory], memory_aliases: dict[str, arch.Memory], fields: dict[str, arch.BitFieldDescr], attributes: list[arch.InstrAttribute], functions: dict[str, arch.Function], instr_size: int, native_size: int, arch_name: str, static_scalars: bool, intrinsics, generate_coverage: bool, ignore_static=False) Track miscellaneous information throughout the code generation process. Also provides helper functions for staticness conversion etc. .. py:attribute:: constants .. py:attribute:: memories .. py:attribute:: memory_aliases .. py:attribute:: fields .. py:attribute:: attributes .. py:attribute:: functions .. py:attribute:: instr_size .. py:attribute:: native_size .. py:attribute:: arch_name .. py:attribute:: intrinsics .. py:attribute:: static_scalars .. py:attribute:: generate_coverage .. py:attribute:: ignore_static :value: False .. py:attribute:: found_code_infos :value: [] .. py:attribute:: code_lines :value: [] .. py:attribute:: pc_reg :value: None .. py:attribute:: pc_mem :value: None .. py:attribute:: raise_fn :type: m2isar.metamodel.arch.Function :value: None .. py:attribute:: mem_raise_fn :type: m2isar.metamodel.arch.Function :value: None .. py:attribute:: generates_exception :value: False .. py:attribute:: is_exception :value: False .. py:attribute:: temp_var_count :value: 0 .. py:attribute:: mem_var_count :value: 0 .. py:attribute:: fn_var_count :value: 0 .. py:attribute:: affected_regs .. py:attribute:: dependent_regs .. py:attribute:: used_arch_data :value: False .. py:method:: make_static(val, signed=False) Wrap a static expression. .. py:method:: wrap_codestring(val, static=False) Wrap an entire static line. .. py:method:: get_constant_or_val(name_or_val) Convenience accessor for constant values.