I was imagining more like some kind of primitive CPU mode that sends every single RAM request to a software exception. Something you would normally have turned off but available for truly heavy duty debugging.
That sounds pretty similar to what Valgrind does, basically runs your program in a VM with that kind of instrumentation. The details of how it works are way past the boundaries of my own knowledge though :)
The operating system could effect this by not providing any page tables to the CPU, so every memory reference faults and the OS has to handle them all.
A sanitizer is that runtime debug check. The compiler just inserts those checks.
Okay. Then I have to assume that they didn't do it for SimCity! Thanks.
Sanitizers come with a lot of overhead, and the tech wasn't readily available in SimCity's day, certainly not for Windows 95.
I was imagining more like some kind of primitive CPU mode that sends every single RAM request to a software exception. Something you would normally have turned off but available for truly heavy duty debugging.
That sounds pretty similar to what Valgrind does, basically runs your program in a VM with that kind of instrumentation. The details of how it works are way past the boundaries of my own knowledge though :)
The operating system could effect this by not providing any page tables to the CPU, so every memory reference faults and the OS has to handle them all.