Где хранятся скомпилированные функции?

Я пытаюсь понять, как PHP работает внутри. Я написал расширение Zend и удалил "zend_compile_file", затем сбросил возвращенный zend_op_array*. Я думаю, что понимаю большую часть происходящего, но пока не понимаю, где в этой структуре будут находиться коды операций скомпилированной функции. Скажем, например, что я компилирую этот файл:

<?php
function test($a, $b) {
    return $a + $b;
}

echo test(5, 10);
?>

Тогда сброшенные коды выглядят так:

opcode             op1        op2        return
------------------------------------------------
ZEND_INIT_FCALL    UNUSED     "test"     UNUSED
ZEND_SEND_VAL      5          UNUSED     UNUSED
ZEND_SEND_VAL      10         UNUSED     UNUSED
ZEND_DO_UCALL      UNUSED     UNUSED     ~0
ZEND_ECHO          ~0         UNUSED     UNUSED
ZEND_RETURN        1          UNUSED     UNUSED

Это довольно просто понять: она вызывает функцию "test" с параметрами 5 и 10, помещает результаты во временную переменную ~0 и затем вызывает echo с этой переменной.

Мой вопрос: где компилируется тест? Где его коды операций?

0 ответов

Другие вопросы по тегам