Приложение asm.js очень быстрое (почти на родной скорости C ++):
http://kripken.github.io/mloc_emscripten_talk/micro4b.png
Но как можно написать один на C ++, преобразовать его в код LLVM, а затем сделать какой-нибудь трюк с emscripten / asm.js? Я не нашел учебника по этому поводу.
И если я напишу код на C ++, то как использовать js API-ы, например XMLHttpRequest, WebSockets, Canvas или WebGL?
c++
javascript
llvm
LO кака
источник
источник
Ответы:
Я считаю , что вы ошибаетесь в вашем понимании asm.js .
Во-первых, из их FAQ
А ты попросил уточнения добавил :
Вы не пишете «приложение asm.js», скорее, asm.js - это цель 1, для которой нужно скомпилировать код C ++.
Эта статья Джона Резига содержит ряд деталей, которые могут лучше объяснить, как будет использоваться asm.js.
Начиная с этого изображения:
Вы можете видеть, что asm.js является целью перевода emscripten . Emscripten осуществляет перевод байт-кода LLVM в JavaScript, а asm.js является подмножеством JavaScript. Пребывание в ограниченном подмножестве JavaScript в asm.js позволяет оптимизировать код и ускорить его выполнение.
Вы также спросили:
Опять же, вы как бы упускаете из виду. Asm.js позволяет портировать существующие приложения C / C ++ в JavaScript, чтобы их можно было запускать в браузере. Обычно вы не сможете использовать JS API в своем коде на C / C ++, и в asm.js нет ничего волшебного, чтобы это позволить.
Если у вас есть новое приложение для написания, которое нуждается в JS API, вы должны написать приложение на JS, а не пытаться писать на C ++, а затем портировать на JavaScript.
И возвращаясь к статье Ресига, есть два ключевых цитаты на ваш вопрос:
а также
Вместо этого вам стоит подумать о том, чтобы иметь JavaScript-программу, которая вызывает нужные вам API-интерфейсы JS, а также делать вызовы C ++, скомпилированного в JavaScript. Взгляните на этот учебник, чтобы узнать, как вызывать код C ++ из JavaScript.
Для некоторых дополнительных исследований в emscripten есть учебное пособие, которое поможет вам начать понимать, как брать код на C ++, запускать его через LLVM, а затем нацеливать на asm.js.
+1 Строго говоря, это неправда. Код C / C ++ не знает, для чего он будет скомпилирован, поэтому я не могу назвать asm.js целью. Другой инструмент (emscripten) получает вывод LLVM, а затем переводит его в совместимый с asm.js JavaScript. Но я собираюсь назвать это целью, потому что это легче понять.
источник
Да, вы можете написать код C ++ и скомпилировать его в asm.js, используя emscripten. Я не пробовал сам, и я не уверен, насколько это готово для прайм-тайм. Кажется, он достаточно хорош для запуска множества игр.
Вот учебник: http://kripken.github.io/emscripten-site/docs/getting_started/Tutorial.html . Глядя на учебник, кажется довольно простым для компиляции кода C ++:
источник
emcc
допустимым?Самый простой способ - использовать WCPP , пакет, который позволяет импортировать C ++ практически непосредственно в ваш проект Node.
Наш С ++
В терминале (для компиляции нашего C ++)
Наш JavaScript
Для получения дополнительной информации см. Пакет NPM или Git Repo.
источник