एआरएम विधानसभा कोड लेखन


20

मेरे रास्पबेरी पाई प्राप्त करने के बाद, मैंने फैसला किया कि मैं एआरएम विधानसभा कोड लिखना सीखना चाहता हूं। मेरा सवाल है, मुझे शुरुआत करने के लिए क्या चाहिए? मुझे लगता है कि वहाँ पहले से ही एक संकलक स्थापित है, लेकिन मुझे नहीं पता कि यह क्या है (शायद gcc?)। किसी भी मदद की सराहना की है!


यहाँ एआरएम असेंबली के बारे में एक और (निशुल्क) पुस्तक है: yurichev.com/writings/RE_for_beginners-en.pdf
डेनिस यूरीशेव

जवाबों:


19

निर्भर करता है कि आप कितना असेंबलर लिखना चाहते हैं। यदि आप सी कोड में एम्बेडेड केवल छोटे स्निपेट लिखना चाहते हैं, तो gccवास्तव में आप क्या देख रहे हैं। asmसी में निर्देश का उपयोग कैसे करें के उदाहरणों में इनलाइन एएसएम संदर्भ देखें: एआरएम जीसीसी इनलाइन असेंबलर कुकबुक

अगर दूसरी ओर आप केवल छोटे स्निपेट से अधिक लिखना चाहते हैं तो आप एक पूर्ण कोडांतरक का उपयोग करने से बेहतर होंगे। यह या तो as, gasया दोनों (उपनाम) के रूप में उपलब्ध होगा ।

और अंत में आपको एआरएम अनुदेश सेट के बारे में थोड़ा सीखना होगा। इस पर एक आसान संदर्भ है: ARM1176JZF-S तकनीकी संदर्भ मैनुअल

एनबी कृपया याद रखें कि आरपीआई केवल armv6 निर्देशों का समर्थन करता है - इसलिए armv7 से कुछ भी उपयोग करने की कोशिश न करें

सौभाग्य!! :)


4

मैंने एआरएम असेंबली कोड के साथ अपने साहसिक कार्य की शुरुआत बहुत पहले नहीं की थी और यहां मेरे संसाधन हैं:

  • कैम्ब्रिज यूनिवर्सिटी ने ट्यूटोरियल का एक बहुत ही अच्छा सेट यहाँ प्रकाशित किया: बेकिंग पाई । इसमें आपके स्वयं के ओएस के लिए एक टेम्प्लेट शामिल है, प्रत्येक ट्यूटोरियल के लिए पूर्ण कोड उदाहरण और अपने कोड को बनाने और चलाने के सभी निर्देशों पर।
  • इसके अतिरिक्त, इस मोटी किताब में सभी ठिकानों को शामिल किया जाना चाहिए: ARM सिस्टम डेवलपर की गाइड

3

यद्यपि मैं कमांड लाइन इंटरफ़ेस के साथ काफी सहज हूं, मैं GUI की सुविधा का विरोध नहीं कर सका। कुछ समय पहले, मुझे पता चला कि मैं एक रास्पबेरी पाई में एआरएम विधानसभा भाषा कार्यक्रमों को विकसित करने के लिए कोडब्लॉक आईडीई का उपयोग कर सकता हूं। इसलिए मैंने एक ट्यूटोरियल लिखा और इसे माजिदी एआरएम असेंबली की वेबसाइट के लिए लिखे रास्पबेरी पाई असेंबली प्रोग्रामिंग ट्यूटोरियल में जोड़ दिया:

http://www.microdigitaled.com/ARM/ARM_ASM_books.htm

वेबसाइट पर, "एआरएम असेंबली प्रोग्रामिंग यूजिंग रास्पबेरी पाई जीयूआई" लिंक पर क्लिक करें।

उम्मीद है की यह मदद करेगा।


1

जीसीसी डिफ़ॉल्ट रूप से स्थापित है। यदि आप रास्पबेरी पाई के लिए इस नए हैं, तो मैं आपको एआरएम विधानसभा की तुलना में एक आसान प्रोग्रामिंग भाषा देखने की सलाह देता हूं। असेंबली के लिए कोई आईडीई नहीं है, इसलिए आपको एक टेक्स्ट एडिटर का उपयोग करना होगा और इसे टर्मिनल के माध्यम से इकट्ठा करना होगा। मैं Gedit को उपयोग में आसानी के लिए सुझाता हूं। हालांकि सिंटैक्स को विधानसभा के लिए हाइलाइट करने के लिए मुझे जीथब के लिए जाना था, विशेष रूप से shinyquagsire23 के पृष्ठ पर। यह बहुत सुंदर है। मदद के लिए मैंने जो सबसे अच्छा संसाधन पाया है वह ब्रूस स्मिथ द्वारा "रास्पबेरी पाई असेंबली लैंग्वेज: रास्पियन बिगिनर्स" है। आप इसे अमेज़न पर पा सकते हैं। वह स्पष्ट और सरल तरीकों में से एक में विधानसभा की व्याख्या करता है जो मैंने पाया है।


1

चल उदाहरणों के साथ जानें

मैं इस पर काम कर रहा हूं: https://github.com/cirosantilli/arm-assembly-cheat

विशेषताएं:

  • ठीक उसी असेंबली को QEMU उपयोगकर्ता मोड के साथ लिनक्स होस्ट पर चलाया जा सकता है, इसलिए आप पाई में मूल निवासी जाने से पहले अपने होस्ट पर तेज़ी से सामान आज़मा सकते हैं
  • ARMv7 और ARMv8 दोनों को कवर करता है
  • अच्छा GDB सेटअप बॉक्स से बाहर, दोनों मेजबान और देशी पर
  • ने कहा कि असेंबली लाइन नंबर दिखाओ जहां चीजें विफल हुईं
  • IO के लिए C मानक पुस्तकालय का उपयोग करता है, जो इसे सिद्धांत रूप में ओएस पोर्टेबल बनाता है, और जैसे printfऔर जैसे आसानी से पुन: उपयोग करने की अनुमति देता हैmemcpy
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.