Flash компилятор / оптимизация интерпретатора - PullRequest
3 голосов
/ 27 марта 2009

Я начал работать с ActionScript 3 / Flash 9 довольно недавно, исходя из «реального» опыта программирования, и мне стало немного любопытно, какой именно машинный код заканчивается в конце дня. Я хотел бы знать, какие оптимизации выполняет компилятор при объединении SWF с флагом оптимизации (например, развертывание цикла, разрешение константного значения до немедленного и т. Д.), А также какого рода машинный код сгенерируют интерпретаторы ( матрица умножает использование инструкций SSE на способных процессорах, какой режим FPU он использует, являются ли автоматически выровненные структуры данных и т. д.).

У кого-нибудь есть ссылки на документацию по этому вопросу? Google продолжает отправлять меня на сторонние продукты.

Ответы [ 4 ]

2 голосов
/ 20 февраля 2010

Я недавно проверял флеш-компилятор. Это потрясающе! Вот простой код класса:

    var A : Number = 0.0;
    A = A*2*4;

А вот и разобранный код:

5       pushdouble      0
7       convert_d
8       setlocal1
9       getlocal1
10      pushbyte        2
12      multiply
13      pushbyte        4
15      multiply
16      convert_d
17      setlocal1

Вау! В 21 веке у нас есть компилятор на уровне 1980-х.

2 голосов
/ 29 марта 2009

Начиная с AS3, появилась новая виртуальная машина, которая использует JIT .

Кроме того, я не эксперт по лицензиям, но компилятор Flex SDK также является открытым исходным кодом, если я правильно помню.

1 голос
/ 28 марта 2009

Я бы начал читать блог Николаса Каннасса и работа (парень, стоящий за MTASC AS2 компилятором и Haxe ) ... и все, что с этим связано.

Также - но немного более поверхностно - недавно в блоге Питера Элста была довольно интересная трансляция на эту тему:

http://www.peterelst.com/blog/2009/03/10/flash-player-internals/

0 голосов
/ 28 марта 2009

Возможно, я ошибаюсь, но у меня сложилось впечатление, что Actionscript не компилируется, скорее интерпретируется, как php. Единственное отличие состоит в том, что Actionscript инкапсулируется вместе с другими ресурсами в .swf. Во время игры с некоторыми декомпиляторами я видел, что вы также можете рассматривать код как своего рода байт-код, но я бы не стал сравнивать это с машинным кодом любыми способами.

Если вы ищете повышение производительности, я бы посоветовал вам взглянуть на Alchemy . Я никогда не работал с ним, но этот экспериментальный продукт Adobe должен позволять переносить код C / C ++ на Flash Player с минимальными потерями производительности.

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