super happy that our paper "Alive2: Bounded Translation Validation for LLVM" is one of the distinguished papers at PLDI 2021!
https://cs.utah.edu/~regehr/alive2-pldi21.pdf…
it'll be presented in session 4B on Thursday June 24
Most processors are happy with 0 as a memory address and e.g. in kernel or embedded, 0 page is often real memory. User programs in some systems are set up so that virtual address 0 is not mapped to any physical page. So it's a property of OS/environment not processor.
This is exactly why C left it undefined: determined by environment/processor *not* by language. Compiler developers/Standards writers have broken the basic language semantics.