Helper function for rendering stack dump.
(self, sp: int, dump: Sequence[Tuple[int, int, Union[int, str, None]]])
| 124 | print(f'{s_before}[flags: {s_flags}]') |
| 125 | |
| 126 | def render_stack_dump(self, sp: int, dump: Sequence[Tuple[int, int, Union[int, str, None]]]) -> None: |
| 127 | """Helper function for rendering stack dump. |
| 128 | """ |
| 129 | |
| 130 | # number of hexadecimal nibbles to display per value |
| 131 | nibbles = self.pointersize * 2 |
| 132 | |
| 133 | for address, value, deref in dump: |
| 134 | offset = address - sp |
| 135 | |
| 136 | value_str = '(unreachable)' if value is None else f'{value:#0{nibbles + 2}x}' |
| 137 | |
| 138 | if isinstance(deref, int): |
| 139 | deref_str = f'{deref:#0{nibbles + 2}x}' |
| 140 | |
| 141 | elif isinstance(deref, str): |
| 142 | deref_str = f'"{deref}"' |
| 143 | |
| 144 | else: |
| 145 | deref_str = '' |
| 146 | |
| 147 | print(f'SP + {offset:#04x} │ {address:#010x} : {value_str}{f" {RARROW} {deref_str}" if deref_str else ""}') |
| 148 | |
| 149 | def render_assembly(self, listing: Sequence[InsnLike], pc: int, prediction: Prophecy) -> None: |
| 150 | """Helper function for rendering assembly. |