This shows you the differences between two versions of the page.
blog:pushbx:2022:1031_unmak_explanations_and_plans [2022-10-31 10:10:02 +0100 Oct Mon] ecm created |
blog:pushbx:2022:1031_unmak_explanations_and_plans [2022-10-31 16:40:11 +0100 Oct Mon] (current) ecm fix typo and numbered listing format (thanks rr) |
||
---|---|---|---|
Line 6: | Line 6: | ||
I didn't get to use the (third) 95LX that much this week, though I did read a few more chapters of a story. Right now my modern mobile device shut down due to a discharged battery (without warning) so I might as well spend some time writing on the 95LX again. | I didn't get to use the (third) 95LX that much this week, though I did read a few more chapters of a story. Right now my modern mobile device shut down due to a discharged battery (without warning) so I might as well spend some time writing on the 95LX again. | ||
- | Friday (the day before yesterday) I started to work on some tools to disassemble and re-assemble programs. For now I have been working on Public Domain ZModem (PDZM) version 1.26 which is, as the name suggests, released into the public domain but does not ship with sources. Another case of "free software | + | Friday (the day before yesterday) I started to work on some tools to disassemble and re-assemble programs. For now I have been working on Public Domain ZModem (PDZM) version 1.26 which is, as the name suggests, released into the public domain but does not ship with sources. Another case of "free software |
===== ===== | ===== ===== | ||
Line 17: | Line 17: | ||
- Find initial entrypoints. (For an MZ .EXE this is only one, taken from the header.) | - Find initial entrypoints. (For an MZ .EXE this is only one, taken from the header.) | ||
- | |||
- Disassemble instructions until an unconditional, | - Disassemble instructions until an unconditional, | ||
- | |||
- Collect all immediate branch targets from what was disassembled. (These are from conditional or unconditional jumps and loops, as well as calls, both short, near, and far.) | - Collect all immediate branch targets from what was disassembled. (These are from conditional or unconditional jumps and loops, as well as calls, both short, near, and far.) | ||
- | |||
- Repeat the process with the newly gathered entrypoints. However, keep track of what was already disassembled to avoid redundant disassembly as well as infinite loops. | - Repeat the process with the newly gathered entrypoints. However, keep track of what was already disassembled to avoid redundant disassembly as well as infinite loops. | ||
- | |||
- Record all disassembly ranges in the least amount of data. | - Record all disassembly ranges in the least amount of data. | ||