Подтвердить что ты не робот

Как Javascript переводится на байт-код?

Я не могу найти информацию в Интернете о том, как языки W3C компилируются в машинный код. Я знаю, что разрыв между сетью и процессором должен быть каким-то образом браузером, но как это работает и каковы шаги до тех пор, пока Javascript не будет выполнен в процессоре?

Ссылки на научные документы также будут очень признательны.

4b9b3361

Ответ 1

Это до реализации; спецификация - это полное описание языка и то, как он должен работать, реализации могут свободно удовлетворить эту реализацию любым способом. Некоторые реализации кажутся (извне), чтобы запустить его исключительно как интерпретатор в старом смысле; другие могут или не могут компилироваться в байт-код; V8 компилируется в машинный код (дважды, для горячих точек в приложении).

Команда V8 (V8, являющаяся движком JavaScript в Chromium и Chrome) периодически публикует описания того, как они получают фантастическую скорость из V8, что они делают. Вы можете найти некоторые из них на сайте проекта и блоге Chromium.

Естественно, вы также можете использовать код любой из версий с открытым исходным кодом. V8 и SpiderMonkey (движок Mozilla) - это две основные версии с открытым исходным кодом, которые я знаю.

Ответ 2

Это может помочь: http://www.ecma-international.org/publications/standards/Ecma-262.htm

Существует нет спецификации для перевода в байт-код (это зависит от разработчиков браузера), но есть спецификации о том, как должен вести себя язык

Ответ 4

Javascript (как следует из названия) - динамический язык сценариев. Это означает, что код анализируется и выполняется во время выполнения с помощью механизма Javascript для веб-браузера.

Это зависит от веб-браузера, как он хочет иметь дело с Javascript. Некоторые могут генерировать промежуточный язык или байт-код. Некоторые могут непосредственно анализировать и выполнять его.

Вот шаги к простейшему способу выполнения Javascript (синтаксический анализ и выполнение во время выполнения):

Анализ и предварительная обработка (рекурсивный спуск или иначе) Анализ Выполнение

Chrome Javascript Engine компилирует Javascript на собственный машинный код для конкретной платформы (для оптимальной производительности). Он также имеет Сбор мусора Механизм.

Ответ 5

В дополнение к полезным, конкретным ответам, уже упомянутым, фраза "адаптивная оптимизация", вероятно, стоит посмотреть, если ваша работа представляет интерес. JavaScript и его интерпретаторы - это всего лишь последний экземпляр систем, которым необходимо перевести что-то еще в машинный код во время выполнения, поэтому там будет много более широкого чтения. Байт-коды Pascal, Smalltalk, Java и т.д. Могут быть достаточно легко рассмотрены как промежуточная форма в процессе запуска определенного языка на произвольном аппаратном обеспечении - Apple SquirrelFish явно создает байт-код и использует, например, JIT-компилятор.