Как будет происходить инициализация value type на низком уровне?

возник вопрос, как работает память с value type на низком уровне. Допустим мы создаем переменную var first = 5 Получается, что в стеке у нас будет храниться значение, а в коде адрес на место в стеке (смещение). Объявим вторую переменную var second = first Как будет происходить инициализация на низком уровне? Перейдем по смещению в стеке и возьмем значение? Если допустил какие-то ошибки - прошу поправить. Также буду благодарен, если подбросите книгу/статью на эту тему


Ответы (1 шт):

Автор решения: alexanius

В целом Вы правильно понимаете как это будет работать. Компилятор знает количество и размер всех локальных переменных. Для каждой переменной он определит её смещение в стековом кадре. После этого компилятор будет оперировать уже не обращением к объекту, а смещением на стеке. В начале процедуры будут созданы операции, записывающие в адрес локальной переменной начальное значение. В некоторых случаях компилятор может посчитать что для переменной достаточно выделить регистр чтобы не работать с оперативной памятью. Почитать про это можно в любом учебнике по компиляторам.

→ Ссылка