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