С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Если на входе процедура D выделила место для своих переменных и скопировала SP в BP, далее процедура B или C сохранила в стеке BP от процедуры D, и точно так же выделила место для своих переменных, то если теперь вызать процедуру A, она не будет знать из B или C её вызвали, и где искать BP от процедуры D, чтобы добраться до её локальных переменных. Каким образом это можно подсчитать во время компиляции?!
Это не обязательно какой-то выделенный регистр, но в Си имеется функция выделения памяти в стеке, и когда размер выделяемой памяти приходит в виде параметра, без BP или его аналога этого не сделать. Ну а в паскале, если разрешать доступ к локальным переменным внешних процедур, то значение SP при входе тоже придётся где-то запоминать, а во внутренней процедуре откуда-то извлечь.
Эту тему просматривают: 3 (пользователей: 0 , гостей: 3)