6

मुझे असेंबली सीखने में दिलचस्पी है, विशेष रूप से क्योंकि मुझे पॉलिमॉर्फिक कोड बल्कि दिलचस्प लगता है और मैं उलझन में हूं जिसके बारे में मुझे सीखना चाहिए।कौन सी असेंबली भाषा सीखने के लिए

मैंने सुना है x86 सीखने या शुरू करने के लिए सबसे आम है, लेकिन एक अलग असेंबली भाषा में अधिकांश एप्लिकेशन (विजुअल स्टूडियो में लिखे गए) नहीं हैं? या सामान्य इंटरमीडिएट भाषा या कुछ में? या सीआईएल या आईएल या जो भी रनटाइम पर x86 में संकलित हो जाता है?

+0

क्यों आप इस जानने के लिए करना चाहते हैं? गहरी समझ के लिए या किसी अन्य कारण के लिए? –

उत्तर

5

यह इस बात पर निर्भर करता है कि आप क्या सीखना चाहते हैं। सीआईएल एक सैद्धांतिक मशीन (या आभासी मशीन) के लिए असेंबली भाषा है जिसे the CLR कहा जाता है, जिसे सॉफ्टवेयर में लागू किया जाता है। सीआईएल कोड को तब x86 असेंबली या 64 बिट इंटेल असेंबली में बस-इन-टाइम कंपाइलर द्वारा संकलित किया जाता है।

आप मुख्य रूप से दृश्य स्टूडियो में प्रोग्रामिंग रहे हैं, तो मैं पहले सीआईएल सीखने इन कारणों के लिए, की सिफारिश करेंगे:

1) सीआईएल बहुत सरल है। x86 असेंबली 1 9 70 के दशक से विकसित हुई है और यह वास्तव में दिखाती है। निर्देशों की संख्या बहुत बड़ी है और आपको शुरू करने के लिए अप्रासंगिक तकनीकी विवरण सीखना होगा।

2) अच्छी तरह से संरचित कार्यक्रम लिखना आसान होगा। यदि आप बाद में x86 असेंबली सीखने का फैसला करते हैं, तो उम्मीद है कि आप उन आदतों को अपने साथ ले लेंगे।

3) यदि आप कभी भी अपने .NET-प्रोग्राम्स को निम्न स्तर पर ट्यून करना चाहते हैं तो सीआईएल अधिक उपयोगी होगा, क्योंकि यह वही है जिसे वे संकलित करते हैं। यह आखिरी जगह है जिसे आपको अनुकूलित करना चाहिए। 86/64 सीखने के लिए

कारण:

1) यह असली हार्डवेयर के लिए एक विधानसभा भाषा है। इसका मतलब है कि जो भी आप सीखते हैं वह "असली चीज़" होगी। वास्तविक हार्डवेयर काम करने के तरीके के बारे में आप भी बहुत कुछ सीखेंगे। इसका मतलब यह नहीं है कि पहले एक सरल भाषा सीखना आसान नहीं हो सकता है।

2) मंच में रजिस्ट्रार हैं, जो एक ऐसी सुविधा है जिसे आप सीआईएल के बारे में नहीं सीखेंगे।

3) प्लेटफ़ॉर्म में ऑब्जेक्ट उन्मुख सुविधाओं का निर्माण नहीं होता है, जिसका अर्थ है कि आपको यह सीखना होगा कि इन्हें कैसे कार्यान्वित किया जाए। यह ऐसा कुछ है जिसे आप सी ++ के माध्यम से भी सीख सकते हैं।

सब कुछ, मैं सीआईएल, जेवीएम असेंबली या एलसी -3 असेंबली जैसी सरल भाषा सीखने की सिफारिश करता हूं, जैसा कि डैनियल वोल्फ द्वारा सुझाया गया है। यदि आप x86 असेंबली भी सीखना चाहते हैं तो आप हमेशा बाद में ऐसा कर सकते हैं।सही क्रम में दोनों सीखना शायद अपने आप पर x86 असेंबली सीखना आसान है।

+0

जेवीएम असेंबली द्वारा, आपका मतलब जावा बाइटकोड है, है ना? – nbro

+0

मुझे लगता है कि हम एक ही चीज़ के लिए अलग-अलग शर्तों का उपयोग कर रहे हैं। मेरा मतलब x86 असेंबली भाषा के जेवीएम समकक्ष था। मैं एकत्रित संस्करण (बाइनरी) के लिए बाइटकोड शब्द का उपयोग करूंगा। –

+0

मेरा मतलब है कि जावा स्रोत कोड संकलित करने के बाद केवल बाइटकोड (IRETURN, IADD, आदि जैसे निर्देश) हैं। इस बाइटकोड को तब JVM (जावा वर्चुअल मशीन) द्वारा व्याख्या किया जाता है। – nbro

1

आईएल असेंबलर नहीं है, इंटरमीडिएट भाषा है और हां, .NET रनटाइम द्वारा असेंबलर में संकलित हो जाता है। असेंबलर (या मशीन कोड) सीपीयू बोलने वाली एकमात्र भाषा है।

.NET असेंबली असेंबलर में लिखे या उत्पन्न नहीं होते हैं, ये बहुत अलग चीजें हैं।

मुझे लगता है कि 86 असेंबलर शुरू करने के लिए ठीक होना चाहिए, यदि आप वास्तव में आप वास्तव में सीखने विधानसभा भाषा में रुचि रखते हैं अपने आप को इस सब दर्द दे सकते हैं या इस तरह के प्रयास ;-)

2

क्या करना चाहते हैं, एक पुस्तक है कि मैं अनुशंसा करेंगे Introduction to Computer Systems। लेखकों ने एक कंप्यूटर सिस्टम के लिए एक असेंबली भाषा सिखाई है जिसे उन्होंने एलसी -3 के रूप में जाना जाता है। इस मंच को अपने आप सीखने के लिए कोई मूल्य नहीं है, लेकिन यह एक बहुत ही सरल मशीन भाषा है। एक सरल मशीन भाषा को समझने के बाद, आप x86 जैसे अधिक जटिल भाषाओं को सीखने के लिए आगे बढ़ सकते हैं।

1

क्या कंप्यूटर चिप आर्किटेक्चर आमतौर पर आप काम करते हैं या काम करना पसंद करते हैं? क्या मंच या ओएस क्या आप आमतौर पर काम करते हैं?

विधानसभा में प्रोग्रामिंग करते समय ये मामला।

पीसी & विंडोज़? मैक ? यूनिक्स? पीसी (x86), लिनक्स या बीएसडी पर चल रहे लिनक्स या बीएसडी सोलारिस स्पार्क में चल रहे हैं?

असेंबली भाषा सीखने के कई तरीके हैं।

आमतौर पर, एकल चिप आर्किटेक्चर के लिए केवल एक ही असेंबली भाषा होती है, न कि कई उच्च स्तरीय प्रोग्रामिंग भाषाओं की तरह। JMV, DotNet सीआईएल या MSIL (अपने ही), पी कोड, आदि

और में:

एक और के रूप में पहले ही उल्लेख किया, पहले से ही लोगों की तरह एक "आभासी मशीन" का उपयोग करने के लिए पिछले उत्तरों से उल्लेख है उस परिदृश्य से कोई फ़र्क नहीं पड़ता कि आप किस प्लेटफॉर्म का उपयोग कर रहे हैं।

पीसी एएसएम है, लेकिन, आप भी एक व्युत्पन्न एनएएसएम कहा जाता है का उपयोग कर सकते हैं:

http://www.nasm.us/

http://en.wikipedia.org/wiki/Netwide_Assembler

संबंधित मुद्दे