Do not assume 0x0 to be an unusable address

I just ran into the problem that GCC assumes that a pointer cannot be NULL, if you have accessed it previously, e.g.
```
unsigned *x = ...;
printf("%p is %u\n", (void *) x, *x);
if (!x) break;
else ...
```
The problem is that 0x0 is a perfectly fine address to read from without an MMU / paging.
So it is completely unreasonable that the `if (!x)` is dropped without any sort of warning.