Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Misha v.3 03.02.2010 06:16 / 03.02.2010 06:19
немного новых деталей к #6.$c($a+$b)преобразился в следующий:
Operation.code OP_PREPARE_TO_EXPRESSION Operation.code OP_VALUE__GET_ELEMENT Operation.origin ... Operation.value "a" Operation.code OP_VALUE__GET_ELEMENT Operation.origin ... Operation.value "b" Operation.code OP_ADD Operation.code OP_WITH_ROOT__VALUE__CONSTRUCT_EXPR Operation.origin ... Operation.value "c"фактически новая конструкция (с новым кодом операции OP_VALUE__GET_ELEMENT):
Operation.code OP_VALUE__GET_ELEMENT Operation.origin ... Operation.value "a"равносильно существовавшей ранее конструкции
Operation.code OP_WITH_READ Operation.code OP_VALUE Operation.origin ... Operation.value "a" Operation.code OP_GET_ELEMENTс той лишь разницей, что она выполняется за одну итерацию работы байт машины, а не за три, как раньше и делает только одну запись в стек, а не три, как раньше.
Operation.code OP_PREPARE_TO_EXPRESSION ... Operation.code OP_WITH_ROOT__VALUE__CONSTRUCT_EXPR Operation.origin ... Operation.value "c"по своей сути аналогична существовавшей ранее конструкции:
Operation.code OP_WITH_ROOT Operation.code OP_VALUE Operation.origin ... Operation.value "c" Operation.code OP_PREPARE_TO_EXPRESSION ... Operation.code OP_CONSTRUCT_EXPRтолько выполняется за два "такта" вместо четырёх.