Matt Godbolt, creator of Compiler Explorer, writes about compiler optimizations, assembly, emulation, and software performance.
HN commenters say they learned a lot from it, and cite his posts on SIMD floating point and compiler optimization.
Case in point:
https://xania.org/201405/jsbeeb-getting-the-timings-right-cpu:
"So far so good - it seems unusual to our modern “memory is slow” mindset that the processor touches RAM every cycle, but this is from an age where processors and RAM were clocked at the same speed."
This page also shows that the 6502 happily did extra memory reads.
In fact, the memory had bandwidth to spare. http://www.6502.org/users/andre/osa/oa1.html#hw-io:
"The memory access is twice as fast as the CPU access, so that during Phi2 low the video readout is done and at Phi2 high the usual CPU access takes place"
I remember reading about a setup with two 6502s both running from the same single-ported RAM at full speed, but cannot find it.
Here's a description of the file format used by BBC Basic:
http://xania.org/200711/bbc-basic-v-format
That's Basic V, which was the variant used on the ARM-based Archimedes, but it's the same file format as the 6502 machine Basics.
Note that the line numbers used by GOTO and GOSUB were specially flagged --- this was so the RENUMBER command could find them. It also meant that computed gotos weren't renumbered...
(Of course, BBC Basic had proper named procedures and functions with local variables, but all self-respecting Basics had to support GOTO and GOSUB.)
Godbolt is such an amazing tool, and amazing that it's free.
For a random example from a few days ago, I wanted to understand how Rust compiles various approaches to doing pairwise addition between a f64 vector and a f32 vector: https://godbolt.org/z/9envsT. Profiling can tell me which is fastest, but godbolt is really helpful for understanding why.
(Fun fact I learned recently, after years of using it: Godbolt is named after its creator, Matt Godbolt [0]).
[0] https://xania.org/MattGodbolt
That's very much an issue with SIMD, especially where floating point numbers are concerned.
Matt Godbolt wrote about it recently.
https://xania.org/202512/21-vectorising-floats
TLDR, math notation and language specify particular orders in which floating point operations happen, and precision limits of IEEE float representation mean those have to be honoured by default.
Allowing compilers to reorder things in breach of that contract is an option, but it comes with risks.
Weird and wonderful it was, but also amazingly hackable. Using similar tricks to the allocator, I was able to "ROM patch" RISC OS 3.1 to look like 3.5 [1] using only a few bytes of module space. I do miss those days :)
[1]: http://xania.org/201212/finallook-a-risc-os-3.1-hack
Also, look at Matt's write up of how this works:
http://xania.org/201609/how-compiler-explorer-runs-on-amazon
as a pragmatic example (incl. all tools & configs) of how to build an auto scaling & deploying site, without overdosing on kool-aid.