Decompile & Debug - BSDG Jan 2026
Details
I hope everyone is enjoying their holidays. The results of our poll are in. It was a tight race, with a number of upsets, but we will kick off January 2026 exploring the relationship between the high level human readable source code we write and the binary machine code that powers our computers. Also note that we are meeting at a different location: Room APIN 1210 in CWI's Pintail Building off Maple Grove & Overland.
Back in the 80s I taught myself how to use the command-line debugger that shipped as part of MS-DOS 3 to edit games. Debuggers have come a long way since then, but the relationship between machine readable and human readable code has always fascinated me.
I've dabbled with this off and on over the years, but recently I started looking at the LLVM tool-chain, and how to render source code interleaved with assembly representation to better understand how the code we write behaves at runtime, and how that changes from platform to platform.
Beyond LLVM, I will show off x64dbg, Ghidra (by the NSA), and some other tooling related to decompiles & debuggers.
I'll start with a basic introduction to compilers & debugging, even debug some JavaScript in the browser to show the universality of the concepts. Not sure if I'll get the full round-trip of JavaScript through the JIT into machine code and back to assembly, but that sounds like a fun challenge.
I also made a really fun utility that visualizes the relationship between different data types, which resulted in me going down the rabbit hole of understanding the IEEE 754 floating point standards to make sense of why a signaling "Not a Number" (NaN) value becomes non-signaling when it is passed through an 32-bit Intel x86 register, but not when passing through a 64-bit AMD64 register.
Bit of trivia for you: How many different representations of ∞ does the IEEE 754 floating point standard support? It is more than one, and less than infinite. Come to the session and find out the exact number...
For those who don't know me, I've been writing code for over 40 years in various software development related roles, including as a developer advocate. I was also a professional improvisational performer for 10 years. My favorite type of presentation starting with some prepared demos and slides and then as questions come up we go off script and figure out things out live. I don't have all the answers, but I love to figure things out!
