Our great sponsors
-
tatradas
Disassembler for x86 executables (16-bit and 32-bit) which supports PE, NE, MZ, COM and ELF file formats
-
lazarus
Discontinued Free Pascal Lazarus Project - Sync'ed with Lazarus SubVersion trunk every 15 minutes
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
The most "funny" disassembler I have ever seen in pascal/delphi is the one from cheat engine...
https://github.com/cheat-engine/cheat-engine/blob/master/Che...
That one unit has more than 16000 LOC, its basically one huge case statement where each opcode is handled separately... super simple but certainly not DRY (don't repeat yourself). But I guess its one of those cases which you should avoid writing DRY code.
In the same manner is the fpdebug-disassembler from the free pascal team, I found that disassembler one of the most elegant one.
https://github.com/alrieckert/lazarus/blob/master/components...
It has some minor errors in the Rex decoding though, if I remember correctly....
edge via patent and other legal protections" constantly-expanding-the-instruction-set approach.
So the issue, at least in x86-land is, "Who is the absolute source of truth with respect to the instruction set?"
Also, remember that Christopher Domas (Google him, you'll find a whole lot of interesting stuff) -- discovered that x86 processors typically can and do implement all sorts of undocumented instructions:
https://github.com/xoreaxeaxeax/sandsifter
>"Typically, several million undocumented instructions on your processor will be found, but these generally fall into a small number of different groups. After binning the anomalies, the summarize tool attempts to assign each instruction to an issue category:
o Software bug (for example, a bug in your hypervisor or disassembler),
o Hardware bug (a bug in your CPU), or
o Undocumented instruction (an instruction that exists in the processor, but is not acknowledged by the manufacturer)
Anyway, thanks for the link! (The second one! )