Supporting Delayed-Branch Architectures in the MLTwist Disassembler
Podpora architektur se zpožděnými skoky v disassembleru MLTwist
bakalářská práce (OBHÁJENO)
Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/202673Identifikátory
SIS: 284544
Kolekce
- Kvalifikační práce [11987]
Autor
Vedoucí práce
Oponent práce
Dubský, Jan
Fakulta / součást
Matematicko-fyzikální fakulta
Obor
Informatika se specializací Systémové programování
Katedra / ústav / klinika
Katedra distribuovaných a spolehlivých systémů
Datum obhajoby
5. 9. 2025
Nakladatel
Univerzita Karlova, Matematicko-fyzikální fakultaJazyk
Angličtina
Známka
Výborně
Klíčová slova (česky)
interaktivní disassembler|architektury se zpožděnými skoky|reverzní inženýrství|analýza programů|SuperH 2EKlíčová slova (anglicky)
interactive disassembler|delayed-branch architecture|reverse engineering|program analysis|SuperH 2ETato práce rozšiřuje experimentální disassembler MLTwist o podporu architektur se zpožděnými skoky a instrukcí pracujících s floating-point čísly. Původní návrh vnitřní reprezentace (IC) neumožňoval jednoduše modelovat nesekvenční provádění, které je pro zpožděné skoky typické. Abychom tento problém vyřešili, zavádíme do IC nový, obecný mechanismus "zpožděného efektu" a přepracováváme samotnou reprezentaci kódu do fle- xibilnější grafové struktury. Tento návrh, v kombinaci s rekurzivní analýzou kódu, umož- ňuje efekty libovolné instrukce oddělit a aplikovat později. Dále jsme integrovali podporu operací s floating-point čísly pomocí specializovaných typů výrazů. Funkčnost tohoto no- vého návrhu je demonstrována implementací podpory pro architekturu SuperH 2E.
This thesis extends the MLTwist experimental disassembler to support processor ar- chitectures with delayed branches and floating-point instructions. The original design of MLTwist's intermediate code (IC) could not model the non-sequential execution inherent to delayed branches. To overcome this, we introduce a novel, generic "delayed effect" mechanism to the IC and redesign the underlying code representation into a flexible graph-based structure. This design, coupled with a recursive traversal analysis, allows any instruction's effects to be decoupled and applied at a later point. Furthermore, we integrated floating-point operations via specialized expression types. The functionality of this new design is demonstrated through the implementation of support for the SuperH 2E architecture.
