( cls, reg_value: Union[core.BNRegisterValue, core.BNRegisterValueWithConfidence], arch: Optional['binaryninja.architecture.Architecture'] = None )
| 84 | |
| 85 | @classmethod |
| 86 | def from_BNRegisterValue( |
| 87 | cls, reg_value: Union[core.BNRegisterValue, core.BNRegisterValueWithConfidence], |
| 88 | arch: Optional['binaryninja.architecture.Architecture'] = None |
| 89 | ) -> 'RegisterValue': |
| 90 | confidence = core.max_confidence |
| 91 | if isinstance(reg_value, core.BNRegisterValueWithConfidence): |
| 92 | confidence = reg_value.confidence |
| 93 | reg_value = reg_value.value |
| 94 | if reg_value.state == RegisterValueType.EntryValue: |
| 95 | reg = None |
| 96 | if arch is not None: |
| 97 | reg = arch.get_reg_name(binaryninja.architecture.RegisterIndex(reg_value.value)) |
| 98 | return EntryRegisterValue(reg_value.value, reg=reg, confidence=confidence) |
| 99 | elif reg_value.state == RegisterValueType.ConstantValue: |
| 100 | return ConstantRegisterValue(reg_value.value, confidence=confidence) |
| 101 | elif reg_value.state == RegisterValueType.ConstantPointerValue: |
| 102 | return ConstantPointerRegisterValue(reg_value.value, confidence=confidence) |
| 103 | elif reg_value.state == RegisterValueType.StackFrameOffset: |
| 104 | return StackFrameOffsetRegisterValue(reg_value.value, confidence=confidence) |
| 105 | elif reg_value.state == RegisterValueType.ImportedAddressValue: |
| 106 | return ImportedAddressRegisterValue(reg_value.value, confidence=confidence) |
| 107 | elif reg_value.state == RegisterValueType.UndeterminedValue: |
| 108 | return Undetermined() |
| 109 | elif reg_value.state == RegisterValueType.ReturnAddressValue: |
| 110 | return ReturnAddressRegisterValue(reg_value.value, confidence=confidence) |
| 111 | elif reg_value.state == RegisterValueType.ExternalPointerValue: |
| 112 | return ExternalPointerRegisterValue(reg_value.value, reg_value.offset, confidence=confidence) |
| 113 | elif reg_value.state & RegisterValueType.ConstantDataValue == RegisterValueType.ConstantDataValue: |
| 114 | return ConstantDataRegisterValue(reg_value.value, 0, RegisterValueType(reg_value.state), confidence=confidence, size=reg_value.size) |
| 115 | assert False, f"RegisterValueType {reg_value.state} not handled" |
| 116 | |
| 117 | @classmethod |
| 118 | def to_BNRegisterValue(cls, reg_value: 'RegisterValue') -> core.BNRegisterValue: |
no test coverage detected