Asm.js — это очень строгое подмножество JavaScript, оптимизированное для машин, а не для людей. Если вы хотите, чтобы ваш браузер интерпретировал определенный код как код asm.js, вам необходимо создать модуль, к которому применяются следующие условия:
- весь код полностью статически типизирован и ограничен очень строгим подмножеством JavaScript asm.js.
- ваш модуль начинается с прагмы
"use asm"
Кроме того, модуль asm.js позволяет использовать только три необязательных, но очень специфических параметра:
- объект стандартной библиотеки, обеспечивающий доступ к подмножеству стандартных библиотек JavaScript
- интерфейс внешней функции (FFI), обеспечивающий доступ к пользовательским внешним функциям JavaScript.
- буфер кучи, предоставляющий один
ArrayBuffer
для работы в качестве кучи asm.js
Итак, ваш модуль должен выглядеть примерно так:
function MyAsmModule(stdlib, foreign, heap) {
"use asm";
// module body...
return {
export1: f1,
export2: f2,
// ...
};
}
Функциональные параметры вашего модуля позволяют asm.js вызывать внешний JavaScript и совместно использовать буфер кучи с «обычным» JavaScript. Объект экспорта, возвращаемый модулем, позволяет внешнему JavaScript вызывать asm.js.
Опустите "use asm"
, и ваш браузер не будет знать, что он должен интерпретировать ваш код как модуль asm.js. Он будет рассматривать ваш код как «обычный» JavaScript. Однако простого использования "use asm"
недостаточно, чтобы ваш код интерпретировался как asm.js. Если вы не соответствуете ни одному из других критериев, упомянутых выше, ваш код также будет интерпретироваться как «обычный» JavaScript:
Для получения дополнительной информации об asm.js см., например. статья Джона Резига 2013 года или официальные спецификации.
person
John Slegers
schedule
22.06.2017
"use asm";
будет выполнять данный код быстрее. В противном случае код будет медленнее обычного JS-кода, верно? - person Afshin Mehrabani   schedule 03.05.2014