vitali1995
@vitali1995

Можно ли сэкономить память при копипасте?

Представьте такой пример. Есть несколько функций, которые частично повторяют функционал, например содержат одинаковый цикл присваивания массива. Таких повторов может быть много, что сказывается на размере исполняемого файла и скорости его загрузки в оперативную память. Существуют ли способы компиляции (скажем так) ссылочным методом? Имею ввиду такой пример:
<раздел "a">
<command 1>
<command 2>
...
</a>

<функция "f">
<command 1>
<alias "a">
<command n>
...
</f>


Здесь определённый набор команд определяется в отдельном разделе и при загрузке функции в стек вызовов часть команд будет браться из него, а не дублироваться для каждой функции отдельно. Надеюсь, объяснил понятно.
  • Вопрос задан
  • 443 просмотра
Решения вопроса 1
arusef
@arusef
Novice .NET dev
В общем случае эта задача не решаема из-за различия контекстов исполнения.
Чтобы добиться схожего эффекта, люди и придумали функции ведь. Думаю, что вы знаете, что функция - в сущности, инструкция call, которая обвешена дополнительным кодом для организации изолированного контекста. Если вам это поведение не нужно, то почему бы не использовать обычные инструкции jmp/call и писать в goto-стиле? Тогда отдельные участки кода будут полагаться на определённые предположения о контексте и переиспользоваться, в зависимости от оного. Но учтите, что такой подход крайне сложен и является источником большого числа ошибок.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы