2011-12-07 15 views
6

मैं सिर्फ शैक्षणिक उद्देश्य के लिए सेब आईओएस के साथ कुछ एआरएम असेंबली कोड आज़माउंगा। मैं एक्सकोड के भीतर लाइन कोड में कुछ शुरू करना चाहता हूं। मेरी समझ यह है कि मुझे आईओएस डिवाइस के लिए संकलन करने की आवश्यकता है, उदाहरण के लिए मेरे आईफोन के लिए, जिसका मतलब है कि मुझे सदस्यता के लिए $ 99/वर्ष का भुगतान करना होगा। मुझे नहीं लगता कि मैं आईओएस फोन सिम्युलेटर के साथ एएसएम असेंबली कोड का उपयोग कर सकता हूं। मुझे आईफोन के साथ एक्सकोड एनवी में एआरएम असेंबली कोड पर उदाहरण, किताबें या दस्तावेज़ीकरण खोजने में कठिनाई हो रही है। क्या मैं यह गलत कर रहा हूं? शायद आईओएम असेंबली सीखने के लिए आईओएस सबसे उपयोगकर्ता के अनुकूल माहौल नहीं है।आईओएस असेंबली कोड

+1

Fwiw, यहां iOS के लिए विधानसभा कार्यक्रमों लिखने पर एक [लिंक का संग्रह] (http://www.shervinemami.info/armAssembly.html) है। शैक्षणिक और मनोरंजन के अलावा, मैं इस अभ्यास के मूल्य पर गंभीरता से संदेह करता हूं। आईओएस/एआरएम के लिए – dasblinkenlight

+0

लेखन विधानसभा कोड एक iOS डिवाइस और कार्यक्रम में एक सदस्यता की आवश्यकता है। आरंभ करने के लिए, यह संकलक द्वारा उत्पन्न एआरएम कोड को पढ़ने के लिए पर्याप्त हो सकता है, को देखने के http://stackoverflow.com/questions/13166055/how-do-i-get-started-with-arm-on-ios –

+1

मेरे http://www.modejong.com/blog/post10_arm_timing_framework/index.html – MoDJ

उत्तर

1

आपको लिनक्स-आधारित प्रोग्रामिंग टूलकिट के साथ एक एआरएम विकास किट की आवश्यकता है। फिर आप अपने मैक पर वर्चुअलबॉक्स स्थापित कर सकते हैं, लिनक्स वर्चुअल मशीन बना सकते हैं और वर्चुअल लिनक्स मशीन पर एआरएम डेवलपमेंट टूल्स इंस्टॉल कर सकते हैं। सुनिश्चित करें कि जब आप एआरएम देव किट खरीदते हैं, तो यह एआरएम सीपीयू, पूर्ण देव/टेस्ट बोर्ड, यूएसबी केबल्स सॉफ़्टवेयर ट्रांसफर/डिबगिंग और पूर्ण लिनक्स टूलचैन के साथ आता है। आप $ 99 से कम के लिए ऐसी किट पा सकते हैं।

+1

कैसे: आईओएस के तहत एआरएम एएसएम के समय पर ब्लॉग पोस्ट उपयोगी लिंक के एक नंबर और एक उदाहरण Xcode परियोजना है कि .s एक Xcode प्रोजेक्ट से जुड़ी फ़ाइलें शामिल प्रदान करता है क्या वह उसे अपने आईफोन पर बाइनरी के रूप में अपना कोई भी कोड चलाने में मदद करता है? – Strelok

+2

यह नहीं करता है, लेकिन वह लिखने के लिए और डिबग एआरएम विधानसभा कोड के समय वे एक एआरएम देव किट के साथ बहुत आगे जाना होगा चाहता है। और अगर उसे यह पसंद नहीं है, तो वह अपने आईओएस डेवलपर सदस्यता के विपरीत इसे पुनर्विक्रय कर सकता है। – Jacek

+0

तो वह पहले से ही एक iOS डेवलपर कि मंच के साथ शुरू करने के लिए नहीं है नहीं है। मैं जेसेक से सहमत हूं। –

2

यहां तक ​​कि एक कोड हस्ताक्षर प्रमाणपत्र के बिना, मुझे लगता है कि आप इस योजना के पॉप-अप मेनू (यह के दाईं ओर) के पास जाओ और "आईओएस डिवाइस"

में सक्षम होना चाहिए एक बार जब आप करते हैं, तो आप अपनी परियोजना में किसी भी .c या .m (या .cpp या .mm) फ़ाइल का चयन कर सकते हैं, सहायक संपादक खोलें, और सहायक संपादक कूदबार से "असेंबली" चुनें। फिर आप अपने स्रोत कोड और असेंबली कोड को तरफ देख सकते हैं।

या आप केवल उत्पाद मेनू में जाएँ और आउटपुट उत्पन्न कर सकते हैं -> विधानसभा

आप यह आसान सी कोड है, जहां समारोह कॉल ज्यादा आसान हो जाएगा ऑब्जेक्टिव-सी विधि कॉल की तुलना में शुरू में पालन करने के लिए के साथ शुरू करने के लिए मिल सकता है ।

11

बैक अप ...

आप क्या सीखने की कोशिश कर रहे हैं? आर्म असेंबली या आईओएस प्रोग्रामिंग? एक चुनें ...

क्या आपके पास कोई असेंबली अनुभव है?

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

इसे कुछ मिनट या शायद आधे घंटे दें, इसे पाने के लिए बहुत लंबा समय नहीं लेना चाहिए, शायद शाम को यदि आप इसके बारे में गंभीर हैं।

http://github.com/dwelch67/lsasim learnasm.txt फ़ाइल को देखें।

यह नि: शुल्क, मुक्त स्रोत है, अधिकतर स्थानों (लिनक्स, यूनिक्स, विंडोज़, आदि को सी कंपाइलर के साथ काम करना चाहिए), यदि आप पहले से प्रोग्रामर नहीं हैं और बुनियादी कंपाइलर टूल या प्रोग्रामिंग कौशल नहीं हैं, तो सीखें कुछ भाषाएं (पाइथन को कठिन तरीके से देखें http://learnpythonthehardway.org/), सी निश्चित रूप से, और असेंबलर पर काम पर वापस आएं। उपरोक्त lsasim चीज एआरएम नहीं है, लेकिन इसमें बहुत सी परिचित विशेषताएं हैं। मुझे बताएं कि मैंने जो काम किया है, वह कितना अच्छा या बुरा है।

अब इस एआरएम लेकिन अंगूठे अनुदेश सेट है:

https://github.com/dwelch67/thumbulator

नहीं एक ट्यूटोरियल लेकिन एक सादे, सरल, अनुदेश सेट सिम्युलेटर। यह स्पष्ट होना चाहिए कि सिम्युलेटर में क्या चल रहा है, आप डीबगिंग में मदद करने के लिए जो भी देखना चाहते हैं उसे जोड़/संशोधित/प्रिंट कर सकते हैं। आप अपने पैरों को एम्बेडेड, अंगूठे, कॉर्टेक्स-एम जैसे, एआरएम रजिस्ट्रार, जीसीसी, gnu assembler, और/या llvm clang क्रॉस कंपाइलर्स के रूप में गीला कर सकते हैं। उदाहरणों में से एक को ले लो-फिर इसे संशोधित करना शुरू करें।

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

आप गीथब में देखेंगे मेरे पास नमूने के साथ कई अन्य परियोजनाएं हैं जो असेंबलर से शुरू होती हैं, फिर सी में अग्रणी एएसएम बूट कोड में आती हैं लेकिन कई एआरएम आधारित नहीं होते हैं। हार्डवेयर की लागत $ 10 से $ 50 या उससे भी कम है। उदाहरण के लिए आप यगाबेट चीज को देख सकते हैं और फ्री विजुअल बॉय अग्रिम सिम्युलेटर प्राप्त कर सकते हैं और 32 बिट आर्म निर्देश या 16 बिट अंगूठे या जो कुछ भी अनुकरण कर सकते हैं, और एक अनुरूपित डिस्प्ले इत्यादि कर सकते हैं। या यदि आपके पास गेमबॉय हार्डवेयर या nds या nds हैं लाइट और सही कारतूस आप वास्तविक हार्डवेयर पर प्रोग्राम चला सकते हैं।

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

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

सिम्युलेटर तक पहुंच के लिए भुगतान करने का कोई कारण नहीं है, वहां कई सारे हाथ सिमुलेटर हैं, एक मैम में, हथियार आर्म्यूलेटर जीडीबी और अन्य स्थानों में, कई गेमबॉय अग्रिम और निन्टेन्दो डीएस सिमुलेटर आदि। , इत्यादि, बेशक वहाँ qemu-arm है। आप जितने अधिक सिमुलेटर हैं, शायद आप कोशिश करने के लिए समय निकालने के इच्छुक हैं, मैं लगभग 10 साल या उससे भी ज्यादा हूं और उन सभी की कोशिश नहीं की।

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

यदि मैं जो पूछ रहा था उसके साथ मैं निशान से दूर हूं, तो कोई समस्या नहीं है कि मैं खुशी से इस जवाब को हटा दूंगा ...

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