Кажется, я задал неправильный вопрос ...
Вопрос в том, каков путь от исходного кода на С ++ к машинному языку с промежуточным шагом сборки?
Поэтому, когда компилятор начинает преобразовывать исходный код в код сборки, он делает что-то важное:
int x {1};
преобразуется компилятором в три вещи:
- имя
x
,
- адрес объекта
x
- количество байтов по этому адресу, определяемое типом x.
[Примечание редактора: ОП забыл "код для инициализации x
со значением 1"]
так что на уровне машины есть значение и количество байтов для значения по этому адресу,
и я думаю, что это то, что называется lvalue.
Но если компилятор помещает значение в регистр процессора и не дает ему адрес в памяти, то это значение представляется в исходном коде как rvalue.
Я хочу знать, верно ли это понимание, и на него не ответил предложенный дубликат.