Ну я и пишу - "vreg1 = add vreg0, 1". После этой инструкции виртуальный регистр vreg1 содержит новое значение, vreg0 - старое. Использование префиксного или постфиксного инкремента влияет только на то какой из них будет задействован в текущем контексте.
Выше утверждалось, что виртуальные регистры присваиваются ровно один раз и получают значения в зависимости от того, была ли инициализация.
Нет, после работы фронтенда компилятора будет одна IR инструкция в обоих случаях
Тогда каким образом
и
выведет разные значения? А тест показывает, что эти фрагменты выводят разные значения. И того же требует стандарт. И инструкция не add, а inc, этого требует идеология языка, так как в обоих случаях только inc гарантирует максимальную производительность. Но в одном случае сначала inc, потом mov, а в другом наоборот, или даже два раза mov и между ними inc.
После обработки IR бакендом может не быть ни одной.
Не смешно.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.