हां और नहीं। यदि यह आपकी पहली असेंबली भाषा है, तो एआरएम एक अच्छा है (x86 एक बुरा है) शुरू करने के लिए (अन्य अच्छे हैं)। मैं एक निर्देश सेट सिम्युलेटर का उपयोग कर पहले सीखने की सलाह देते हैं। यह आपको क्या हो रहा है में बेहतर दृश्यता दे सकता है और आपको सफलता पर एक बेहतर मौका देगा (निराशा के कारण छोड़ने का मौका कम)। एक बार जब आप उपकरण के साथ अपने पैरों को गीला कर लेते हैं, नंगे धातु कार्यक्रमों का निर्माण करते हैं, तो रास्पबेरी पीआई एक खराब मंच नहीं है। परिधीय हालांकि खराब दस्तावेज उपयोग करने के लिए बहुत ही सरल हैं (अन्य समान प्लेटफ़ॉर्म की तुलना में) वहां पर्याप्त समुदाय और उदाहरण हैं जो दस्तावेज़ीकरण की क्षतिपूर्ति के लिए हैं। रास्पबेरी पीआई को एआरएम के परिप्रेक्ष्य से गैर-ईंटबल माना जा सकता है। अपना पहला ब्लिंकिंग नेतृत्व कार्यक्रम बनाने की कोशिश कर रहे बोर्ड को ब्रिक करना काफी निराशाजनक हो सकता है।
मेरे पास github.com/dwelch67 थंबूलेटर पर कुछ उदाहरण हैं एक अंगूठे निर्देश सेट सिम्युलेटर है जो किसी भी सी प्रोग्रामर को समझने में आसान होना चाहिए और यह जांचने के लिए कि क्या हो रहा है। amber_samples एक अलग दृष्टिकोण है, यह एक arm2 क्लोन है (कुछ अपवादों के अलावा आप arm2 और आधुनिक arm4 के बीच सीधा संबंध देख सकते हैं और उसके बाद हाथ से लाइसेंस प्राप्त है। दोनों के बीच एक चिकनी संक्रमण होना चाहिए। तर्क के रूप में आप एक सिम्युलेटर की आवश्यकता है, मेरा उदाहरण Verilator का उपयोग करता है लेकिन icarus verilog को आसानी से काम करना चाहिए। प्रोसेसर में प्रोग्राम निष्पादित करके आपको अपनी दृश्यता कहां मिलती है। बस और ऐसे, निर्देश प्राप्त करने, स्मृति चक्र इत्यादि देखकर
मैं हूँ एक नया (मुझे) निर्देश सेट सीखने के तरीके के रूप में एक डिस्सेबलर लिखने में एक बड़ा आस्तिक। एआरएम निर्देश सेट निश्चित शब्द लंबाई (32 बिट) और अलग करने के लिए बहुत आसान है। शुद्ध अंगूठे निर्देश 16 बिट पर तय किए गए हैं और यहां तक कि अंगूठे को आसान करना। अंगूठे में अंगूठे 2 एक्सटेंशन हैं और इससे यह कठिन हो जाता है इसलिए मैं पहले उनसे बचूंगा। निश्चित शब्द लंबाई निर्देश के साथ आयन सेट आप बाइनरी छवि के माध्यम से सुरक्षित रूप से चल सकते हैं और जैसे ही आप शुरुआत से अंत तक जाते हैं। डेटा अजीब लगेगा, लेकिन निर्देश सही जगह पर होंगे। परिवर्तनीय शब्द की लंबाई के साथ आप केवल शुरुआत में शुरू नहीं कर सकते हैं और रैखिक रूप से अलग नहीं हो सकते हैं (थंब 2 एक्सटेंशन का उपयोग करके चर-निर्देश-लंबाई का मतलब है) आपके पास तीन बाइट निर्देश हो सकते हैं, फिर डेटा का एक बाइट, फिर निर्देश का एक और बाइट, रैखिक रूप से डेटा का बाइट एक निर्देश के रूप में अलग किया जाएगा और यदि यह एक बहु-बाइट निर्देश के रूप में डीकोड करने के लिए होता है तो अब आप सिंक से बाहर हैं। एक परिवर्तनीय निर्देश लंबाई बाइनरी को अलग करने का एकमात्र उचित तरीका निष्पादन आदेश में कोड के सभी पथों का पालन करना है और आप जो भी कर सकते हैं उससे अलग हो सकते हैं (प्रत्येक संभावित कोड पथ को अनुकरण किए बिना आप डेटा से सभी निर्देशों को अलग करने में सक्षम नहीं हो सकते हैं) । परिवर्तनीय निर्देश लंबाई disassembly निश्चित रूप से एक उन्नत विषय है, पहले असेंबली भाषा में कुछ ताकत प्राप्त करें। संभवतः एक डिससेबलर से निपटने से पहले एक परिवर्तनीय शब्द लंबाई निर्देश सेट के लिए एक निर्देश सेट सिम्युलेटर भी बनाएं (आपको मूल रूप से बाइनरी के माध्यम से अपना रास्ता डीकोड करना है, पूरी तरह से डिकोडिंग नहीं करना चाहिए बल्कि आंशिक रूप से एक परिवर्तनीय शब्द लंबाई निर्देश सेट के लिए डिस्सेबलर बनाने के लिए डीकोडिंग करना है। वहां लंबे विवरण के लिए खेद है।
दोनों अंगूठे और एम्बर_समूह दृष्टिकोण निश्चित निर्देश लंबाई हैं जो मशीन कोड को एएसएम रिलेशनशिप के रूप में देखना आसान बनाता है। साथ ही साथ अपना कोड चल रहा है और समझता है कि यह खरपतवार में क्यों चला गया और मर गया (जिसे आप रास्पबेरी पीआई या किसी अन्य हार्डवेयर पर नहीं देख पाएंगे)।
एक कैम्ब्राइड यूनिवर्सिटी उदाहरण है जो सरल चमकते हुए उदाहरणों और फिर वीडियो पिक्सेल में अपना हाथ रखता है। साथ ही साथ अन्य व्यक्ति जिन्होंने चर्चा मंचों के नंगे धातु अनुभाग में उनके उदाहरणों के लिंक पोस्ट किए हैं। "मैं इसे असेंबली भाषा में कैसे कर सकता हूं" के लिए एक महसूस करने के लिए, छोटे सी कार्यों को लिखें, अनुकूलन (अनुकूलन के साथ) को फिर से इकट्ठा करें। मैं विशेष रूप से कोड के बारे में बात कर रहा हूं जैसे कि बी +, printf() जैसे कोड नहीं। वहां असेंबली भाषा सीख रही है, इन्स्ट्रुसिटन सेट, जो प्रोसेसर परिवार के लिए विशिष्ट (सामान्य) है। तो मैं सिस्टम कॉल या लाइब्रेरी कॉल सीखने के बाद बहस करूंगा। "मैं एक स्ट्रिंग कैसे मुद्रित करूं" प्रकार की सामग्री में हार्डवेयर सीखने, सिस्टम (एक रोम मॉनिटर/डीबगर) या लाइब्रेरी (सी लाइब्रेरी या अन्य उच्च स्तरीय भाषाएं फ़ंक्शन कॉल और सम्मेलन शामिल हैं जो उनके पुस्तकालयों का लाभ उठाने के लिए शामिल हैं, जो स्वयं कई को कॉल कर सकती हैं अन्य पुस्तकालयों में बहुत सारे जंक जुड़े हुए हैं)। इसलिए "असेंबली भाषा" सीखने के लिए सी का उपयोग करना कोई लाइब्रेरी कॉल नहीं है, कोई memcpy no printf इत्यादि नहीं है, हालांकि, यदि आप सिस्टम और लाइब्रेरी कॉल का उपयोग करते हैं, तो आपको उस सिस्टम या लिंक पर चलाने के लिए अपना एएसएम कोड लिखना होगा उन कॉल के साथ जिनके पास सिस्टम निर्भरता हो सकती है। एक उच्च स्तरीय भाषा सी या पायथन आदि सीखने के बारे में सोचें, वहां भाषा सीख रही है, ऑपरेटरों को जोड़ने, घटाने, एक्सर इत्यादि के लिए सीखने वाले चर घोषित करने आदि। पॉइंटर्स और सरणी आदि का उपयोग कैसे करें। किसी बिंदु पर आप सी लाइब्रेरी सीखते हैं कॉल, printf(), strcpy(), malloc, आदि YMMV, तब भाषा सीखें, फिर सिस्टम सिस्टम कॉल पर इंटरफ़ेस सीखने के द्वारा अलग से कॉल करता है या लैंगेज सीखता है (उन्हें एक साथ सीखें)।
यदि आप सिस्टम के हिस्से के रूप में एएसएम सीखना चुनते हैं तो मैं लिनक्स में रहने की सलाह देता हूं, एक सरल सी फंक्शंस, संकलन और डिस्सेबल बनाता हूं, कंपाइलर के लिए कॉलिंग सम्मेलन सीखता हूं और हाथ संदर्भ सामग्री का उपयोग करने के लिए उपयोग करता हूं निर्देश जिन्हें आप उन्हें कंपाइलर द्वारा बनाए गए देखते हैं। उस फ़ंक्शन को एएसएम का उपयोग करके स्क्रैच से बनाना सीखें और इसे सी प्रोग्राम के साथ लिंक करें, फिर उस फ़ंक्शन को संशोधित करें। जो ऊपर वर्णित किया गया है उससे यह एक पूरी तरह से अलग दृष्टिकोण है। विफलता की संभावना के साथ काम किया, लेकिन निश्चित रूप से उदाहरण दृष्टिकोण से सीखना है।
विवेक-रामचंद्रन - [सुरक्षाTube] (http://www.securitytube.net/video/208) यह पहला वीडियो है ... आप सुरक्षा- freak.in पर अनुक्रमिक पा सकते हैं –
यह साइट विशिष्ट प्रोग्रामिंग के लिए है आपकी शिक्षा के लिए सामान्य सलाह प्राप्त करने के लिए आपके सामने आने वाली समस्याएं नहीं हैं। –