Aplikacja asm.js jest bardzo szybka (prawie natywna prędkość C ++):
http://kripken.github.io/mloc_emscripten_talk/micro4b.png
Ale jak można napisać jeden w C ++, przekonwertować go na kod LLVM, a następnie zrobić sztuczkę z emscripten / asm.js? Nie znalazłem żadnego samouczka na ten temat.
A jeśli napiszę kod w C ++, to jak korzystać z API js, na przykład XMLHttpRequest, WebSockets, Canvas lub WebGL?
c++
javascript
llvm
LO kaka
źródło
źródło
Odpowiedzi:
Wierzę, że jesteś w błędzie w zrozumieniu asm.js .
Po pierwsze, z ich FAQ
I poprosiłeś o wyjaśnienie :
Nie piszesz „aplikacji asm.js”, a raczej asm.js jest celem 1 do kompilacji kodu C ++.
Ten artykuł autorstwa Johna Resiga zawiera szereg szczegółów, które mogą lepiej wyjaśnić, w jaki sposób zostanie wykorzystany plik asm.js.
Począwszy od tego obrazu:
widać, że asm.js jest celem tłumaczenia emscripten . Emscripten obsługuje tłumaczenie kodu bajtowego LLVM na JavaScript, a asm.js jest podzbiorem JavaScript. Przebywanie w ograniczonym podzbiorze JavaScript asm.js pozwala na optymalizację i szybsze działanie kodu.
Zapytałeś także:
Znów brakuje ci sensu. Asm.js umożliwia przenoszenie istniejących aplikacji C / C ++ do JavaScript, aby można je było uruchamiać w przeglądarce. Zwykle nie można używać interfejsów API JS w kodzie C / C ++, a asm.js nie pozwala na to.
Jeśli masz nową aplikację do pisania, która wymaga interfejsów API JS, powinieneś napisać aplikację w JS, a nie pisać, próbując pisać w C ++, a następnie przenieść na JavaScript.
Wracając do artykułu Resiga, są dwa kluczowe cytaty na twoje pytanie:
i
Zamiast tego powinieneś rozważyć skorzystanie z programu JavaScript, który wywołuje potrzebne interfejsy API JS oraz wykonywanie wywołań do C ++ skompilowanego do JavaScript. Obejrzyj ten samouczek emscripten, aby dowiedzieć się, jak wywołać kod C ++ z JavaScript.
W przypadku niektórych dodatkowych badań emscripten ma samouczek, który może pomóc w zrozumieniu, jak pobrać kod C ++, uruchomić go przez LLVM, a następnie celować w asm.js.
1 Ściśle mówiąc, to nieprawda. Kod C / C ++ nie jest świadomy tego, do czego zostanie skompilowany, więc nie mogę tak naprawdę nazwać asm.js celem. Inne narzędzie (emscripten) pobiera dane wyjściowe LLVM, a następnie tłumaczy je na JavaScript zgodny z asm.js. Ale zamierzam nazwać to celem, ponieważ łatwiej to zrozumieć.
źródło
Tak, możesz napisać kod C ++ i skompilować go do asm.js, używając emscripten. Sam tego nie próbowałem i nie jestem pewien, jak jest gotowy na najwyższy czas. Wydaje się jednak, że jest wystarczająco dobry, aby uruchomić wiele gier.
Oto samouczek: http://kripken.github.io/emscripten-site/docs/getting_started/Tutorial.html . Patrząc na samouczek, kompilowanie kodu C ++ wydaje się dość łatwe:
źródło
emcc
byłoby poprawne?Najprostszym sposobem byłoby użycie WCPP , pakietu, który pozwala importować C ++ prawie bezpośrednio do projektu Node.
Nasz C ++
W terminalu (aby skompilować nasz C ++)
Nasz JavaScript
Aby uzyskać więcej informacji, zobacz Pakiet NPM lub Git Repo
źródło