Говоря о распределении регистров, в текстах по компиляции (например, «Разработка компилятора» Купера) часто упоминается, что значения, хранящиеся в регистрах, должны быть «безопасными», иначе их следует хранить в памяти.
Что делает небезопасным хранение значения в регистре?
Изменить: Контекст из книги:
«В модели «память-в-память» распределитель должен определить, какие значения можно безопасно хранить в регистрах, то есть какие значения являются однозначными».
Наиболее информативным упоминанием, которое я смог найти, является: «Продвижение регистра использует анализ потока данных значений указателя, чтобы определить, когда значение на основе указателя можно безопасно хранить в регистре на протяжении всего гнезда цикла, и переписать код так, чтобы значение сохранялось в недавно введенная временная переменная».
Итак, чтобы прояснить вопрос: почему значение указателя небезопасно хранить в регистре, и является ли это единственным случаем, когда значение не может быть безопасно сохранено в регистре?