Где Perl хранит свой промежуточный байт-код? - PullRequest
9 голосов
/ 01 октября 2010

Пройдя пару ссылок, я узнал, что Perl выполняет компиляцию и создает промежуточный байт-код, а затем интерпретирует этот байт-код.Мой вопрос заключается в том, где находится этот байт-код?

Как и в других языках, таких как Java, c мы можем видеть машинный исполняемый объектный код после компиляции.Хотя Perl не создает машинно-исполняемый код, но должно быть какое-то место, где он временно хранит байт-код.

Ответы [ 2 ]

20 голосов
/ 01 октября 2010

Результат компиляции сохраняется в памяти в виде дерева кодов операций или, если коротко, optree. Эта структура используется средой выполнения Perl для выполнения вашей программы.

Вы, вероятно, найдете интересный раздел "Скомпилированный код" perlguts . Он объясняет многие детали создания исполняемого optree.

Также возможно записать этот optree на диск и снова загрузить его в другой процесс perl, используя дистрибутив B::C и содержащийся в нем модуль ByteLoader. Однако этот метод не очень хорошо работает во многих программах, поэтому он никоим образом не рекомендуется.

2 голосов
/ 01 октября 2010

Хранит его в памяти как AST .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...