I've been taking some firmware files apart, specifically bios files, just to try and understand better how computers work.
I've also been messing about with shellcode, I find that fascinating.
You've probably heard of Coreboot, an open source BIOS that's been ported to a handful of systems (230 total different configurations, along with a QEMU target for playing with). It's also the foundation of all Chromebooks. This is very short but may be fascinating reading: https://www.coreboot.org/Developer_Manual
I'm not quite at the shellcode-comprehending stage yet, although I realize it's incredibly simple. Agh - I have a basic working knowledge of C, but nonexistent understanding of low-level hardware at this point :)
https://www.nayuki.io/page/a-fundamental-introduction-to-x86... has been on my to-follow-up-on list for a while, along with http://beginners.re/. (Both found via HN)