Si el compilador es bueno esta adición ocurre en los registros y nunca se almacena en la memoria, al menos no en la forma en que está pensando. En realidad, un buen compilador verá que su programa no hace nada, manipulando valores dentro de una función, pero nunca enviar esos valores a ninguna parte fuera de la función puede dar como resultado ningún código.
Si se va a:
c = a + b; printf ("% u \ n", c);
Entonces, un buen compilador tampoco almacenará ese valor C en la memoria, permanecerá en los registros, aunque también depende del procesador. Si, por ejemplo, los compiladores de ese procesador utilizan la pila para pasar variables a funciones, entonces el valor de c se calculará usando registros (un buen compilador verá que C siempre es 11 y simplemente lo asignará) y el valor se colocará en la pila mientras se envía a la función printf. Naturalmente, la función de impresión puede necesitar almacenamiento temporal en la memoria debido a su complejidad (no cabe todo lo que necesita hacer en los registros).
A donde me dirijo es que no hay respuesta para su pregunta. Depende mucho del procesador, compilador, etc. No hay una respuesta genérica. Tengo que preguntarme cuál es la raíz de la pregunta, si esperabas sondear con un depurador, entonces esta no es la pregunta que debes hacer.
En pocas palabras, desmonte su programa y mírelo, para que compile ese día con esos ajustes, podrá ver dónde el compilador ha colocado valores intermedios. Incluso si el compilador asigna una ubicación de memoria para la variable, eso no significa que el programa alguna vez almacenará la variable en esa ubicación. Depende de las optimizaciones.
Sería útil saber qué arquitectura de procesador y compilador está utilizando. El consenso parece ser que no existe una forma realmente portátil de hacerlo. – RichieHindle
¿no es posible que la 'instrucción' que está viendo en realidad se traduzca en una serie de instrucciones de ensamblaje, abarcando un rango de direcciones? – user44511