Re[5]: А почему бы не сделать стек еще умнее?
От: Pavel Dvorkin Россия  
Дата: 15.11.16 12:30
Оценка: +2
Здравствуйте, _smit, Вы писали:


_>Да, всё верно, с блоками слегка погорячился, это всё же накладная операция, действует в рамках вызова функций. Gcc поступает также, т.н. "Calling Convention".


Calling convention — это другое. Это правила передачи параметров функции (слева направо(сейчас нет уже, было в Win16) или справа налево, через стек и/или регистры, кто очищает стек при выходе (вызывающая или вызываемая). К отведению места в стеке под локальные переменные функции это отношения не имеет.

Ну и проблема не в том, что это накладная операция. Сейчас все локальные переменные — это просто смещения от ebp. Там таких ebp-const разбросано немало. Если же выделять память при каждом входе в блок, то одним ebp не обойдешься, придется целый менеджер памяти заводить, который будет определять адреса переменных на i-ом уровне вложенности фигурных скобок с учетом того, что было на всех предыдущих i-1 уровнях.
With best regards
Pavel Dvorkin
Отредактировано 15.11.2016 12:36 Pavel Dvorkin . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.