मेरा मानना है कि आप asm.js की अपनी समझ में गलत हैं ।
सबसे पहले, उनके FAQ से
Q. asm.js एक नई भाषा है?
नहीं, यह सिर्फ (एक उपसमुच्चय) जावास्क्रिप्ट है।
और आपने पूछा स्पष्टीकरण जोड़ा गया है :
लेकिन C ++ में एक [asm.js एप्लीकेशन] लिखना कैसे संभव है
आप "asm.js एप्लिकेशन" नहीं लिखते हैं, बल्कि asm.js आपके C ++ कोड को संकलित करने के लिए एक लक्ष्य 1 है।
जॉन रेजिग का यह लेख कई विवरण प्रदान करता है जो बेहतर तरीके से समझा सकते हैं कि asm.js का उपयोग कैसे किया जाएगा।
इस छवि के साथ शुरू:
आप देख सकते हैं asm.js का अनुवाद लक्ष्य है कि emscripten । Emscripten जावास्क्रिप्ट में LLVM बाइटकोड का अनुवाद संभालती है , और asm.js जावास्क्रिप्ट का एक सबसेट है। जावास्क्रिप्ट के asm.js प्रतिबंधित सब्मिट के भीतर रहने से कोड को अनुकूलित किया जा सकता है और तेजी से चलाया जा सकता है।
आपने यह भी पूछा:
और अगर मैं सी ++ में कोड लिखता हूं, तो जेएस एपीआई-एस का उपयोग कैसे करें
फिर, आप इस बिंदु को याद कर रहे हैं। Asm.js जावास्क्रिप्ट में मौजूदा C / C ++ अनुप्रयोगों को पोर्ट करने में सक्षम बनाता है ताकि उन्हें एक ब्राउज़र के भीतर चलाया जा सके। आप सामान्य तौर पर अपने C / C ++ कोड में JS APIs का उपयोग नहीं कर पाएंगे, और ऐसा करने के लिए asm.js के बारे में कुछ भी जादुई नहीं है।
यदि आपके पास लिखने के लिए एक नया एप्लिकेशन है जिसे JS APIs की आवश्यकता है, तो आपको JS में एप्लिकेशन लिखना चाहिए और C ++ में लिखने की कोशिश करने और फिर जावास्क्रिप्ट में पोर्ट करने की कोशिश के साथ फ्यूज़ नहीं होना चाहिए।
और Resig के लेख पर वापस जा रहे हैं, आपके प्रश्न के लिए दो महत्वपूर्ण उद्धरण हैं:
इस तरह के अनुप्रयोग जो निकट भविष्य में Asm.js को लक्षित करने जा रहे हैं, वे हैं जो एक ब्राउज़र में चलने की पोर्टेबिलिटी से लाभान्वित होंगे, लेकिन उनमें जटिलता का एक स्तर है जिसमें जावास्क्रिप्ट के लिए एक सीधा पोर्ट संभव नहीं होगा
तथा
जैसा कि आप शायद ऊपर के कोड से देख सकते हैं Asm.js को हाथ से लिखे जाने के लिए डिज़ाइन नहीं किया गया है। ... अभी Asm.js के लिए सबसे आम उपयोग मामला C / C ++ से जावास्क्रिप्ट में संकलित अनुप्रयोगों में है। इनमें से लगभग कोई भी एप्लिकेशन वेबलॉग और लाइक का उपयोग करने से परे, सार्थक तरीके से DOM के साथ बातचीत नहीं करता है।
इसके बजाय आप जो करने पर विचार करना चाहते हैं, वह एक जावास्क्रिप्ट प्रोग्राम हो सकता है जो जेएस एपीआई को कॉल करता है जिसे आपको सी ++ को कॉल करने के साथ-साथ जावास्क्रिप्ट की आवश्यकता होती है। जावास्क्रिप्ट से C ++ कोड को कॉल करने के तरीके को देखने के लिए इस emscripten ट्यूटोरियल पर एक नज़र डालें ।
कुछ अतिरिक्त शोध के लिए, एम्सस्क्रिप्टेन के पास एक ट्यूटोरियल है जो आपको यह समझने में मदद कर सकता है कि सी ++ कोड कैसे लिया जाए, इसे एलएलवीएम के माध्यम से चलाएं और फिर asm.js. पर लक्षित करें।
1 कड़ाई से बोलना, यह सच नहीं है। C / C ++ कोड इस बात से अनजान है कि यह किसके संकलित होने वाला है, इसलिए मैं वास्तव में asm.js को लक्ष्य नहीं कह सकता। एक अन्य उपकरण (ईमस्क्रिप्टेन) LLVM आउटपुट लेता है और फिर asm.js के अनुरूप जावास्क्रिप्ट में अनुवाद करता है। लेकिन मैं इसे एक लक्ष्य कहने जा रहा हूं क्योंकि इसे समझना आसान है।