MC decoder model specification
Decoders
- class mcdecoder.core.McDecoder(namespace: str | None, namespace_prefix: str, machine: MachineDecoder, instructions: List[InstructionDecoder], decision_trees: List[McdDecisionTree], extras: Any | None)
Bases:
object
Decoder itself. The root model element of MC decoder model
- decision_trees: List[McdDecisionTree]
Child McdDecisionTrees
- extras: Any | None
User-defined data not related to a machine, an instruction and a field
- property instruction_decoders: List[InstructionDecoder]
Child InstructionDecoders
Deprecated since version 0.1a6: This will be removed in 1.0. Use instructions instead
- instructions: List[InstructionDecoder]
Child InstructionDecoders
- machine: MachineDecoder
Child MachineDecoder
- property machine_decoder: MachineDecoder
Child MachineDecoder
Deprecated since version 0.1a6: This will be removed in 1.0. Use machine instead
- namespace: str | None
Namespace of generated codes
- namespace_prefix: str
Namespace prefix of generated codes
- class mcdecoder.core.MachineDecoder(byteorder: Literal['big', 'little'], extras: Any | None)
Bases:
object
Decoder for a machine
- byteorder: Literal['big', 'little']
Byte order of a machine
- extras: Any | None
User-defined data for a machine
- class mcdecoder.core.InstructionDecoder(name: str, encoding_element_bit_length: int, length_of_encoding_elements: int, fixed_bit_mask: int, fixed_bits: int, type_bit_length: int, match_condition: InstructionDecoderCondition | None, unmatch_condition: InstructionDecoderCondition | None, fields: List[InstructionFieldDecoder], extras: Any | None, _encoding: str)
Bases:
object
Decoder for an instruction
- encoding_element_bit_length: int
Bit length of an encoding element
- extras: Any | None
User-defined data for an instruction
- property field_decoders: List[InstructionFieldDecoder]
Child InstructionFieldDecoders
Deprecated since version 0.1a6: This will be removed in 1.0. Use fields instead
- fields: List[InstructionFieldDecoder]
Child InstructionFieldDecoders
- fixed_bit_mask: int
Mask of fixed bit positions of an instruction
- fixed_bits: int
Fixed bits of an instruction
- property fixed_bits_mask: int
Mask of fixed bit positions of an instruction
Deprecated since version 0.1a6: This will be removed in 1.0. Use fixed_bit_mask instead
- length_of_encoding_elements: int
Length of encoding elements
- match_condition: InstructionDecoderCondition | None
Condition an instruction must satisfy
- name: str
Name of an instruction
- type_bit_length: int
Bit length of a data type used for an instruction
- property type_bit_size: int
Bit length of a data type used for an instruction
Deprecated since version 0.1a6: This will be removed in 1.0. Use type_bit_length instead
- unmatch_condition: InstructionDecoderCondition | None
Condition an instruction must not satisfy
- class mcdecoder.core.InstructionFieldDecoder(name: str, type_bit_length: int, subfields: List[InstructionSubfieldDecoder], extras: Any | None, _msb: int)
Bases:
object
Decoder for an instruction field
- extras: Any | None
User-defined data for a field
- name: str
Name of a field
- property subfield_decoders: List[InstructionSubfieldDecoder]
Child InstructionSubfieldDecoders
Deprecated since version 0.1a6: This will be removed in 1.0. Use subfields instead
- subfields: List[InstructionSubfieldDecoder]
Child InstructionSubfieldDecoders
- type_bit_length: int
Bit length of a data type used for a field
- property type_bit_size: int
Bit length of a data type used for a field
Deprecated since version 0.1a6: This will be removed in 1.0. Use type_bit_length instead
- class mcdecoder.core.InstructionSubfieldDecoder(index: int, mask: int, msb_in_instruction: int, lsb_in_instruction: int, lsb_in_field: int)
Bases:
object
Decoder for an instruction subfield
- property end_bit_in_field: int
LSB of a subfield in a field
Deprecated since version 0.1a6: This will be removed in 1.0. Use lsb_in_field instead
- property end_bit_in_instruction: int
LSB of a subfield in an instruction
Deprecated since version 0.1a6: This will be removed in 1.0. Use lsb_in_instruction instead
- index: int
Index number of a subfield in a field: 0th to (n-1)th
- lsb_in_field: int
LSB of a subfield in a field
- lsb_in_instruction: int
LSB of a subfield in an instruction
- mask: int
Mask of a subfield in an instruction
- msb_in_instruction: int
MSB of a subfield in an instruction
- property start_bit_in_instruction: int
MSB of a subfield in an instruction
Deprecated since version 0.1a6: This will be removed in 1.0. Use msb_in_instruction instead
Conditions
- class mcdecoder.core.InstructionDecoderCondition
Bases:
object
Condition of instruction encoding when an instruction applys.
Each subclass must have a string attribute ‘type’ to express the type of a subclass.
- abstract property type: str
Type of InstructionDecoderCondition
- class mcdecoder.core.AndIdCondition(conditions: List[InstructionDecoderCondition])
Bases:
InstructionDecoderCondition
‘and’ condition subclass for InstructionDecoderCondition to combine conditions with AND operator
- conditions: List[InstructionDecoderCondition]
Child InstructionDecoderConditions combined with logical AND operation
- property type: str
Type of InstructionDecoderCondition. It’s always ‘and’ for AndIdCondition
- class mcdecoder.core.OrIdCondition(conditions: List[InstructionDecoderCondition])
Bases:
InstructionDecoderCondition
‘or’ condition subclass for InstructionDecoderCondition to combine conditions with OR operator
- conditions: List[InstructionDecoderCondition]
Child InstructionDecoderConditions combined with logical OR operation
- property type: str
Type of InstructionDecoderCondition. It’s always ‘or’ for OrIdCondition
- class mcdecoder.core.EqualityIdCondition(subject: InstructionDecoderConditionObject, operator: str, object: InstructionDecoderConditionObject)
Bases:
InstructionDecoderCondition
Equality condition subclass for InstructionDecoderCondition to test a field value’s equality with a value.
Supported operators are ==, !=, >, >=, < and <=.
- object: InstructionDecoderConditionObject
Objective InstructionDecoderConditionObject to test with
- operator: str
Operator to test
- subject: InstructionDecoderConditionObject
Subjective InstructionDecoderConditionObject to be tested
- property type: str
Type of InstructionDecoderCondition. It’s always ‘equality’ for EqualityIdCondition
- class mcdecoder.core.InIdCondition(subject: InstructionDecoderConditionObject, values: List[int])
Bases:
InstructionDecoderCondition
‘in’ condition subclass for InstructionDecoderCondition to test an instruction field is in a value set
- subject: InstructionDecoderConditionObject
Subjective InstructionDecoderConditionObject to be tested
- property type: str
Type of InstructionDecoderCondition. It’s always ‘in’ for InIdCondition
- values: List[int]
Value set a field must be in
- class mcdecoder.core.InRangeIdCondition(subject: InstructionDecoderConditionObject, value_start: int, value_end: int)
Bases:
InstructionDecoderCondition
‘in_range’ condition subclass for InstructionDecoderCondition to test an instruction field is in a value range(inclusive)
- subject: InstructionDecoderConditionObject
Subjective InstructionDecoderConditionObject to be tested
- property type: str
Type of InstructionDecoderCondition. It’s always ‘in_range’ for InRangeIdCondition
- value_end: int
End of a value range a field must be in
- value_start: int
Start of a value range a field must be in
- class mcdecoder.core.InstructionDecoderConditionObject
Bases:
object
Object or subject of InstructionDecoderCondition.
Each subclass must have a string attribute ‘type’ to express the type of a subclass.
- abstract property type: str
Type of InstructionDecoderConditionObject
- class mcdecoder.core.FieldIdConditionObject(field: str, element_index: int | None)
Bases:
InstructionDecoderConditionObject
Field object/subject subclass for InstructionDecoderConditionObject
- element_index: int | None
Bit element index of a field to be tested
- field: str
Name of a field to be tested
- property type: str
Type of InstructionDecoderConditionObject. It’s always ‘field’ for FieldIdConditionObject
- class mcdecoder.core.ImmediateIdConditionObject(value: int)
Bases:
InstructionDecoderConditionObject
Immediate value object/subject subclass for InstructionDecoderConditionObject
- property type: str
Type of InstructionDecoderConditionObject. It’s always ‘immediate’ for ImmediateIdConditionObject
- value: int
Value to be tested
- class mcdecoder.core.FunctionIdConditionObject(function: str, argument: FieldIdConditionObject)
Bases:
InstructionDecoderConditionObject
Uses the result of a function call as an object/subject. It is a subclass for InstructionDecoderConditionObject
- argument: FieldIdConditionObject
Argument FieldIdConditionObject
- function: str
Name of a function to be called
- property type: str
Type of InstructionDecoderConditionObject. It’s always ‘function’ for FunctionIdConditionObject
Decision tree
- class mcdecoder.core.McdDecisionTree(encoding_element_bit_length: int, length_of_encoding_elements: int, root_node: McdDecisionNode)
Bases:
object
Decision tree to find a matched instruction for a code
- encoding_element_bit_length: int
Bit length of an encoding element
- length_of_encoding_elements: int
Length of encoding elements
- root_node: McdDecisionNode
Root node of a decision tree
- class mcdecoder.core.McdDecisionNode(index: int, mask: int, fixed_bit_nodes: Dict[int, McdDecisionNode], arbitrary_bit_node: McdDecisionNode | None, instructions: List[InstructionDecoder])
Bases:
object
Node of a McdDecisionTree.
It has two types of child nodes:
Fixed bit node: A node related to fixed bits. It is decided by a threshold value.
Arbitrary bit node: A node related to arbitrary bits. It isn’t decided by a threshold value and pass through to the node.
- property all_nodes: Iterable[McdDecisionNode]
This node and its descendants.
The nodes are ordered in the way of depth-first search.
- arbitrary_bit_node: McdDecisionNode | None
Arbitrary bit McdDecisionNode
- fixed_bit_nodes: Dict[int, McdDecisionNode]
Dictionary of a threshold value and its fixed bit McdDecisionNode
- index: int
Index number of a node in a tree
- instructions: List[InstructionDecoder]
Instructions decided by a node
- mask: int
Mask of threshold bit positions