ссылки доступа в кадрах активации на стеке машины - PullRequest
0 голосов
/ 30 января 2011

Я знаю, что ссылки доступа в стеке + массив отображения способ реализации для достижения нелокальных объектов во вложенных процедурах. Может кто-нибудь направить меня к материалу для чтения на эту тему (Google не помог) или можете просто объяснить, как это работает? спасибо

1 Ответ

1 голос
/ 01 февраля 2011

Я не знаю, что вы имеете в виду под отображаемым массивом, но поддержка вложенных процедур обычно не использует массив, но указатель кадра каждого родителя передается каждому дочернему элементу.Так как вы можете искать родительский стековый фрейм родителя (обычно parentparentptr: = [my parentptr + constant]), это создает связанный список стековых фреймов.

В компиляторе вы должны затем построить список переменных для каждого фрейма, а затем вы можете построить выражение (загрузить указатель кадра, затем загрузить переменную путем косвенной загрузки через framepointer) для доступа к нему.В глубоко вложенных структурах, вероятно, стоит один раз найти нужные родительские кадры и сохранить их в стеке.

...