¿Forma estándar C de acceder a la dirección de puntero nulo?

En C, defendiendo elpuntero nulo es Comportamiento indefinido, sin embargo, el valor del puntero nulo tiene una representación de bits que, en algunas arquitecturas, apunta a una dirección válida (por ejemplo, la dirección 0).
Llamemos a esta dirección eldirección de puntero nula, por el bien de la claridad.

Supongamos que quiero escribir una pieza de software en C, en un entorno con acceso ilimitado a la memoria. Supongamos además que quiero escribir algunos datos en la dirección del puntero nulo:¿Cómo lo lograría de manera estándar?

Caso de ejemplo (IA32e):

#include <stdint.h>

int main()
{
   uintptr_t zero = 0;

   char* p = (char*)zero;

   return *p;
}

Este código cuando se compila con gcc con-O3 para IA32e se transforma en

movzx eax, BYTE PTR [0]
ud2

debido a UB (0 es la representación en bits del puntero nulo).

Como C está cerca de la programación de bajo nivel, creo que debe haber una forma de acceder a la dirección de puntero nulo y evitar UB.

Para ser claro
Estoy preguntando qué dice la norma sobre esto,NO cómo lograr esto de una manera definida en la implementación.
Sé la respuesta para el último.

Respuestas a la pregunta(0)

Su respuesta a la pregunta