Saya percaya Anda salah dalam memahami asm.js Anda .
Pertama, dari FAQ mereka
Q. Apakah asm.js adalah bahasa baru?
A. Tidak, itu hanya (sebagian dari) JavaScript.
Dan Anda meminta klarifikasi menambahkan :
Tetapi bagaimana mungkin untuk menulis satu [aplikasi asm.js] di C ++
Anda tidak menulis "asm.js aplikasi", bukan asm.js adalah target 1 untuk mengkompilasi C ++ kode untuk.
Ini artikel oleh John Resig menyediakan sejumlah detail yang mungkin lebih menjelaskan bagaimana asm.js akan digunakan.
Dimulai dengan gambar ini:
Anda dapat melihat bahwa asm.js adalah target terjemahan emscripten . Emscripten menangani menerjemahkan bytecode LLVM ke dalam JavaScript, dan asm.js adalah bagian dari JavaScript. Tetap berada dalam subset terbatas JavaScript asm.js memungkinkan kode dioptimalkan dan berjalan lebih cepat.
Anda juga bertanya:
Dan jika saya menulis kode dalam C ++, maka bagaimana cara menggunakan js API-s
Sekali lagi, Anda agak kehilangan intinya. Asm.js memungkinkan porting aplikasi C / C ++ yang sudah ada ke dalam JavaScript sehingga dapat dijalankan di dalam browser. Anda biasanya tidak dapat menggunakan API JS dalam kode C / C ++ Anda, dan tidak ada yang ajaib tentang asm.js untuk mengizinkannya.
Jika Anda memiliki aplikasi baru untuk menulis yang membutuhkan JS API maka Anda harus menulis aplikasi dalam JS dan tidak lanjut dengan mencoba menulis dalam C ++ dan kemudian port ke JavaScript.
Dan kembali ke artikel Resig, ada dua kutipan kunci untuk pertanyaan Anda:
jenis aplikasi yang akan menargetkan Asm.js, dalam waktu dekat, adalah mereka yang akan mendapat manfaat dari portabilitas berjalan di browser tetapi yang memiliki tingkat kerumitan di mana port langsung ke JavaScript tidak akan mungkin
dan
Seperti yang mungkin Anda lihat dari kode di atas, Asm.js tidak dirancang untuk ditulis dengan tangan. ... Kasus penggunaan paling umum untuk Asm.js saat ini adalah dalam aplikasi yang dipenuhi dari C / C ++ ke JavaScript. Hampir tidak ada aplikasi ini berinteraksi dengan DOM dengan cara yang bermakna, selain menggunakan WebGL dan sejenisnya.
Apa yang Anda mungkin ingin lakukan adalah memiliki program JavaScript yang memanggil JS API yang Anda perlukan bersamaan dengan membuat panggilan ke C ++ yang Anda kompilasi ke JavaScript. Silahkan lihat pada ini emscripten tutorial untuk melihat bagaimana memanggil C ++ kode dari JavaScript.
Untuk beberapa penelitian tambahan, emscripten memiliki tutorial yang dapat membantu Anda memulai dengan memahami cara mengambil kode C ++, menjalankannya melalui LLVM, dan kemudian menargetkan asm.js.
1 Sebenarnya, itu tidak benar. Kode C / C ++ tidak mengetahui apa yang akan dikompilasi, jadi saya tidak bisa benar-benar memanggil asm.js target. Alat lain (emscripten) mengambil output LLVM dan kemudian diterjemahkan ke JavaScript yang sesuai dengan asm.js. Tapi saya akan menyebutnya target karena lebih mudah dimengerti.