logoalt Hacker News

ajrossyesterday at 3:55 PM0 repliesview on HN

As others are pointing out, this isn't true. You can absolutely infer the software state of a system via physical measurement.

But what's interesting isn't your mistake, it's why the mistake was made. The abstraction stack in software is really, really really thick. You don't normally "measure" your software, you add a log statement or run a debugger, and that's more software. And those debuggers aren't written over hardware, they're software too.

But eventually, you get down to the point where there really is hardware in the way. A debugger that tells you the content of a memory address really is, down the stack, doing a memory read, which is an instruction to hardware to measure the voltages in an array of inverter pairs structured as a level 1 SRAM[1]. Or it's setting a breakpoint or watchpoint, which are CPU features implemented in hardware, etc...

The hardware is always there, but we've done such a good job of hiding it that even practitioners are fooled into thinking it isn't there.

[1] And of course there's a stack there too. But read instructions hit the L1 cache.