2009-11-13 10 views
26

मैं अब एआरएम विधानसभा सीखने के लिए, मेरे Windows मोबाइल 5 iPAQ के लिए विकसित करने के लिए जा रहा हूँ, लेकिन मैं कुछ सवाल हैं:मतभेद

  • क्या एआरएम विधानसभा और के बीच मुख्य अंतर हैं x86 असेंबली?
    • इंटरप्ट्स (नए प्रकार) में कोई अंतर है?
      • वे कौन हैं और उनमें से क्या अर्थ है?
    • संकलित करने के लिए सर्वश्रेष्ठ असेंबलर और इसे कहां प्राप्त करें?
  • जहां मुझे कुछ अच्छे संसाधन मिल सकते हैं?
+24

एआरएम असेंबली मनुष्यों द्वारा समझ में आता है। x86 असेंबली ऐतिहासिक विसंगतियों, ट्विस्टी छोटे गैर-कार्टेशियन गलियारे और बड़े पैमाने पर एक्सटेंशन का एक भूलभुलैया है जो केवल एक कंपाइलर का सामना कर सकता है! – bobince

+4

यदि मनुष्य एआरएम को समझ सकते हैं, तो निश्चित रूप से मेरा कुत्ता एमआईपीएस प्रोग्राम कर सकता है! – new123456

+0

http://stackoverflow.com/a/14795541/1163019 – auselen

उत्तर

47

मुख्य मतभेद:

  • एआरएम एक RISC शैली की वास्तुकला है - हालांकि अंगूठे कुछ निर्देश है कि चबाना है निर्देश, एक नियमित रूप से आकार मानक एआरएम और अंगूठे मोड के लिए 16-बिट के लिए (32-बिट है अप 2 निर्देश 'स्लॉट')

  • कम से कम एआरएम v5 आर्किटेक्चर के माध्यम से (मुझे यकीन नहीं है कि v6 क्या करता है), एआरएम पर इंटरप्ट मॉडल इंटेल पर काफी अलग है - रजिस्टरों को ढेर पर धक्का देने के बजाय, एआरएम रजिस्टरों के एक अलग सेट पर आ जाता है जो सामान्य सेट 'छाया' करता है। प्रोसेसर का तरीका निर्धारित करता है कि कौन सी रजिस्टर फ़ाइल दिखाई दे रही है (और सभी रजिस्ट्रार जरूरी नहीं हैं)। यह एक सुंदर जटिल व्यवस्था है। नए एआरएम आर्किटेक्चर (v7 वैसे भी) में एक इंटरप्ट मॉडल है जो इंटेल के करीब है जहां एक बाधा उत्पन्न होने पर रजिस्टरों को स्टैक पर धकेल दिया जाता है। - तो प्रत्येक अनुदेश एक एनओपी के रूप में निष्पादित कर सकते हैं, तो निर्दिष्ट हालत झंडे से मेल नहीं खाते

    • निर्देश सशर्त झंडे में बनाया गया है:

    शाखा अनुदेश कुछ दिलचस्प सुविधाओं है कि इंटेल की में नहीं हैं, वर्तमान स्थिति रजिस्टर फ्लैग स्टेटस (इसका उपयोग इंटेल असेंबली में अक्सर एक या दो निर्देशों के आसपास उन सभी कूदों से बचने के लिए किया जा सकता है)।

  • एआरएम ने तर्क को स्थानांतरित कर दिया है जिसे निर्देश के हिस्से के रूप में एम्बेड किया जा सकता है। तो जब एक स्रोत ऑपरेंड के रूप में एक रजिस्टर का उपयोग करते हैं, तो आप इसे निर्देश के आंतरिक भाग के रूप में स्थानांतरित कर सकते हैं। यह अंकगणित के साथ, कभी-कभी अंकगणित के साथ मदद करता है।

दूसरी तरफ, एआरएम सीधे लोड और स्टोर को छोड़कर स्मृति के साथ बहुत कुछ नहीं कर सकता है। इंटेल असेंबली सीधे मेमोरी पर अधिक संचालन कर सकती है।

ध्यान दें कि एआरएम आर्किटेक्चर संस्करण सीधे वास्तविक एआरएम प्रोसेसर संस्करणों से मेल नहीं खाता है - उदाहरण के लिए, अगर मुझे सही याद है कि एआरएम 7 एक आर्किटेक्चर v5 प्रोसेसर है। व्यक्तिगत रूप से, मुझे यह होना चाहिए जितना अधिक भ्रमित होना चाहिए।

एआरएम आर्किटेक्चर संदर्भ http://www.arm.com से स्वतंत्र रूप से डाउनलोड करने योग्य हैं। मैं एक अच्छा प्रारंभिक बिंदु के लिए Hitex's guides to various ARM microcontrollers की प्रतियां प्राप्त करने का भी सुझाव देता हूं।

एआरएम के साथ शुरू करने के लिए पॉइंटर्स के संबंध में कई स्टैक ओवरफ्लो प्रश्न हैं।उन्हें समीक्षा करने से आपको अच्छे स्थानों का एक बहुत शुरू करने के लिए दे देंगे:

+8

एआरएम 7 एआरएमवी 4 है। एआरएम 9 एआरएमवी 4 टी या एआरएमवी 5 ई है। (ई टीडीएमआई का तात्पर्य है) "एआरएम " सीपीयू परिवार है। "एआरएमवी " निर्देश सेट संस्करण है। –

9

तुम भी है कि एआरएम लाइसेंस उनके IP चिप्स उत्पादन का एहसास करने के बजाय चाहिए। एक लाइसेंसधारी अपने एआरएम कोर माइक्रोप्रोसेसर को कई तरीकों से कॉन्फ़िगर कर सकता है। सबसे महत्वपूर्ण रूप से w.r.t. आपका सवाल यह है कि एआरएम कोर केवल दो इंटरप्ट्स आईआरक्यू और एफआईआरक्यू को परिभाषित करता है, अक्सर, एक विक्रेता विशिष्ट इंटरप्ट नियंत्रक होता है, इसलिए आपको यह जानने की ज़रूरत है कि इंटरफ़ेस को कैसे संभालना है, आपको अपने डिवाइस में माइक्रोप्रोसेसर का उपयोग करने की ज़रूरत है। आईपीएक्यू मॉडल ने इंटेल स्टॉन्गर्म और एक्सस्केल प्रोसेसर का इस्तेमाल किया है। यदि आप उस स्तर पर विकसित करना चाहते हैं, तो आपको विशिष्ट भाग के लिए उपयोगकर्ता संदर्भ पुस्तिका डाउनलोड करनी चाहिए।

जो भी कहा गया है, ओएस द्वारा सेवाओं और डिवाइस ड्राइवरों को बाधित किया जाता है, इसलिए आपको शायद निम्न स्तर के विवरणों के बारे में चिंता करने की आवश्यकता नहीं है। असल में मैं आपकी विकास भाषा के रूप में असेंबलर की पसंद पर सवाल उठाऊंगा। एआरएम पर सी या सी ++ पर असेंबलर चुनने के कुछ कारण हैं (संकलक लगभग निश्चित रूप से कोड प्रदर्शन के संदर्भ में आपको निष्पादित करेगा)। इसके अलावा विंडोज मोबाइल पर, सबसे अधिक उत्पादक एप्लिकेशन स्तर की भाषा सी # होने की संभावना है।

+1

"संकलक लगभग निश्चित रूप से कोड प्रदर्शन के संदर्भ में आपको निष्पादित करेगा"। आईएमई, आपको इस मामले के लिए प्रोग्रामिंग में वास्तव में चूसना होगा। –

+1

@ जोन: इस बिंदु को शायद कुछ योग्यता की आवश्यकता है: एक आकस्मिक असेंबलर प्रोग्रामर, जो निर्देश सेट और उसके लिए विशिष्ट मुहावरे से पूरी तरह से परिचित नहीं है, उस ज्ञान के साथ * एक व्यवसायी द्वारा लिखे गए एक कंपाइलर ऑप्टिमाइज़र को निष्पादित करने की संभावना नहीं है। उत्पादक होने के दौरान ऑप्टिमाइज़िंग कंपाइलर को निष्पादित करने में सक्षम किसी की लागत और उपलब्धता शायद निषिद्ध भी है। संभवतः आप उस व्यवसायी हैं, या शायद आपके अनुभव में "कंपाइलर" चूसने वाले हैं? ;) – Clifford

+1

उदाहरण के तौर पर, मैंने हाल ही में एआरएम कॉर्टेक्स-एम 3 और एआरएम रीयल व्यू कंपाइलर पर एफआईआर फ़िल्टर लागू किया है, और प्रदर्शन को अधिकतम करने के लिए उच्च स्तरीय सी कोड में विभिन्न मुहावरों के साथ प्रयोग किया है। निष्पादन समय संकलक अनुकूलन का उपयोग करके कम किया गया था, और जब विक्रेता के हाथ से लिखित असेंबलर डीएसपी लाइब्रेरी कार्यान्वयन की तुलना में, यह समान प्रदर्शन करता था। सी कार्यान्वयन वास्तव में मामूली तेजी से था, लेकिन शायद इसलिए क्योंकि यह सामान्य होने के बजाय हमारी आवेदन आवश्यकताओं के अनुकूल था। – Clifford

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