История изменений
Исправление SZT, (текущая версия) :
Это же именно стек, не просто память. Т.е мне надо будет сделать alloca, и потом в $sp прописать этот адрес перед вызовом следующей функции?
Ну вот допустим есть у тебя функция a() которая внутри у себя вызывает функцию b() и тебе в функции a() надо получать какие-то данные из функции b() в стек. Допустим, известно количество данных, которые та функция b() может передать, тогда можно сделать alloca() внутри функции a(), передать указатель на эту память в функцию b() и функция b() вернет в ту память какие-то данные.
Допустим если тебе известно, что та функция b() выделит максимум 10 указателей, и тебе те 10 указателей надо получить в функции a() то указатели должны будут там выделяться не просто как обычные локальные переменные, они должны в эту память записываться обязательно, и там храниться в строго единственном экземпляре... т.е. нужен специальный способ для выделения переменных в той памяти, который будет применяться только для указателей, которые потом надо особым образом освобождать в какой-то момент
Зачем вообще этот бред, почему б просто не сделать специальный глобальный стек указателей (т.е. тупо глобальная переменная-структура, где есть указатель на вершину стека, массив и функции push(), pop()), и пусть в этот глобальный стек разные функции добавляют те указатели, которые надо будет потом освободить, и потом пусть GC тупо пробегает этот стек.
Исправление SZT, :
Это же именно стек, не просто память. Т.е мне надо будет сделать alloca, и потом в $sp прописать этот адрес перед вызовом следующей функции?
Ну вот допустим есть у тебя функция a() которая внутри у себя вызывает функцию b() и тебе из функции a() надо получать какие-то данные из функции b() в стек. Допустим, известно количество данных, которые та функция b() может передать, тогда можно сделать alloca() внутри функции a(), передать указатель на эту память в функцию b() и функция b() вернет в ту память какие-то данные.
Допустим если тебе известно, что та функция b() выделит максимум 10 указателей, и тебе те 10 указателей надо получить в функции a() то указатели должны будут там выделяться не просто как обычные локальные переменные, они должны в эту память записываться обязательно, и там храниться в строго единственном экземпляре... т.е. нужен специальный способ для выделения переменных в той памяти, который будет применяться только для указателей, которые потом надо особым образом освобождать в какой-то момент
Зачем вообще этот бред, почему б просто не сделать специальный глобальный стек указателей (т.е. тупо глобальная переменная-структура, где есть указатель на вершину стека, массив и функции push(), pop()), и пусть в этот глобальный стек разные функции добавляют те указатели, которые надо будет потом освободить, и потом пусть GC тупо пробегает этот стек.
Исправление SZT, :
Это же именно стек, не просто память. Т.е мне надо будет сделать alloca, и потом в $sp прописать этот адрес перед вызовом следующей функции?
Ну вот допустим есть у тебя функция a() которая внутри у себя вызывает функцию b() и тебе из функции a() надо получать какие-то данные из функции b() в стек. Допустим, известно количество данных, которые та функция b() может передать, тогда можно сделать alloca() внутри функции a(), передать указатель на эту память в функцию b() и функция b() вернет в ту память какие-то данные.
Допустим если тебе известно, что та функция b() выделит максимум 10 указателей, и тебе те 10 указателей надо получить в функции a() то указатели должны будут там выделяться не просто как локальные переменные, они должны в эту память записываться обязательно, и там храниться в строго единственном экземпляре...
Зачем вообще этот бред, почему б просто не сделать специальный глобальный стек указателей (т.е. тупо глобальная переменная-структура, где есть указатель на вершиту стека, массив и функции push(), pop()), и пусть в этот глобальный стек разные функции добавляют те указатели, которые надо будет потом освободить, и потом пусть GC тупо пробегает этот стек
Исходная версия SZT, :
Это же именно стек, не просто память. Т.е мне надо будет сделать alloca, и потом в $sp прописать этот адрес перед вызовом следующей функции?
Ну вот допустим есть у тебя функция a() которая внутри у себя вызывает функцию b() и тебе из функции a() надо получать какие-то данные из функции b() в стек. Допустим, известно количество данных, которые та функция b() может передать, тогда можно сделать alloca() внутри функции a(), передать указатель на эту память в функцию b() и функция b() вернет в ту память какие-то данные.
Допустим если тебе известно, что та функция b() выделит максимум 10 указателей, и тебе те 10 указателей надо получить в функции a() то указатели должны будут там выделяться не просто как локальные переменные, они должны в эту память записываться обязательно, и там храниться в строго единственном экземпляре...
Зачем вообще этот бред, почему б просто не сделать специальный глобальный стек указателей (т.е. тупо массив и функции push(), pop()), и пусть в этот глобальный стек разные функции добавляют те указатели, которые надо будет потом освободить, и потом пусть GC тупо пробегает этот стек