m2isar.backends.etiss.instruction_utils

Utility classes and functions for instruction generation.

Attributes

data_type_map

MEM_VAL_REPL

FN_VAL_REPL

Classes

CodeString

Code string object. Tracks generate C++ code and various metadata for recursive

MemID

Track a memory access across recursive code generation.

FnID

Track a required function call across recursive code generation.

CodePartsContainer

Container class to encapsulate different ETISS JIT code snippet types.

TransformerContext

Track miscellaneous information throughout the code generation process. Also

Functions

actual_size(size[, min_, max_])

Calculate a fitting c datatype width for any arbitrary size.

Module Contents

data_type_map[source]
MEM_VAL_REPL = 'mem_val_'[source]
FN_VAL_REPL = 'fn_val_'[source]
actual_size(size, min_=8, max_=128)[source]

Calculate a fitting c datatype width for any arbitrary size.

class CodeString(code, static, size, signed, regs_affected=None, line_infos=[])[source]

Code string object. Tracks generate C++ code and various metadata for recursive code generation.

mem_ids: list[MemID][source]
function_calls: list[FnID][source]
line_infos: list[LineInfo][source]
code[source]
static[source]
size[source]
signed[source]
regs_affected[source]
mem_corrected = False[source]
is_literal = False[source]
check_trap = False[source]
property actual_size[source]
property needs_fn_call[source]
property is_mem_access[source]
property write_mem_ids[source]
property read_mem_ids[source]
__str__()[source]
__format__(format_spec)[source]
class MemID[source]

Track a memory access across recursive code generation.

mem_space: m2isar.metamodel.arch.Memory[source]
mem_id: int[source]
index: CodeString[source]
access_size: int[source]
write: bool = None[source]
class FnID[source]

Track a required function call across recursive code generation.

fn_call: m2isar.metamodel.arch.Function[source]
fn_id: int[source]
args: CodeString[source]
class CodePartsContainer[source]

Container class to encapsulate different ETISS JIT code snippet types.

pre_initial_debug_returning: str = None[source]
initial_required: str = None[source]
optional_middle: str = None[source]
appended_required: str = None[source]
appended_optional: str = None[source]
appended_returning_required: str = None[source]
generate()[source]
format(mapping={}, **kwargs)[source]
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)[source]

Track miscellaneous information throughout the code generation process. Also provides helper functions for staticness conversion etc.

constants[source]
memories[source]
memory_aliases[source]
fields[source]
attributes[source]
functions[source]
instr_size[source]
native_size[source]
arch_name[source]
intrinsics[source]
static_scalars[source]
generate_coverage[source]
ignore_static[source]
found_code_infos = [][source]
code_lines = [][source]
pc_reg = None[source]
pc_mem = None[source]
raise_fn: m2isar.metamodel.arch.Function = None[source]
mem_raise_fn: m2isar.metamodel.arch.Function = None[source]
generates_exception = False[source]
is_exception = False[source]
temp_var_count = 0[source]
mem_var_count = 0[source]
fn_var_count = 0[source]
affected_regs[source]
dependent_regs[source]
used_arch_data = False[source]
make_static(val, signed=False)[source]

Wrap a static expression.

wrap_codestring(val, static=False)[source]

Wrap an entire static line.

get_constant_or_val(name_or_val)[source]

Convenience accessor for constant values.