Аллока реализация - PullRequest
       31

Аллока реализация

27 голосов
/ 03 апреля 2009

Как реализовать alloca () с использованием встроенного ассемблера x86 в таких языках, как D, C и C ++? Я хочу создать слегка измененную версию, но сначала мне нужно узнать, как реализована стандартная версия. Чтение разборки из компиляторов не помогает, потому что они выполняют так много оптимизаций, и я просто хочу каноническую форму.

Редактировать: Я предполагаю, что самое сложное в том, что я хочу, чтобы у этого был нормальный синтаксис вызова функции, то есть использование голой функции или чего-то подобного, чтобы она выглядела как обычная alloca ().

Редактировать # 2: Ах, черт возьми, вы можете предположить, что мы не опускаем указатель кадра.

Ответы [ 11 ]

0 голосов
/ 03 апреля 2009

Alloca - это просто, вы просто перемещаете указатель стека вверх; затем сгенерируйте все чтение / запись, чтобы указать на этот новый блок

sub esp, 4
...