2008-09-26 17 views
22

मैं असेंबलर सीखना चाहता हूं। हालांकि, ओएस एक्स के साथ असेंबलर करने के लिए बहुत कम संसाधन हैं।ओएस एक्स पर असेंबलर सीखने के लिए मुझे टूल कहां मिल सकता है?

क्या वहां कोई भी है जो मैक पर असेंबली में प्रोग्राम किया गया है? आपने कहां सिखा?

और, क्या कोई कारण है कि मुझे असेंबली नहीं करनी चाहिए? क्या मैं अपने कंप्यूटर को अपरिवर्तनीय रूप से क्रैश कर रहा हूं (महत्वपूर्ण)?

उत्तर

13

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

  • पुस्तक Reversing by Eldad Eilam
  • जीसीसी के साथ सरल सी स्रोत संकलित करें एस और पढ़ने के विधानसभा
  • उत्पन्न उपयोग Sandpile
  • irc.freenode.net पर #openrce में शामिल हों और इसके अलावा OpenRCE

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

संपादित करें: इसके अलावा, जीसीसी प्राप्त करें और एक्सकोड से मैकपोर्ट्स या कुछ ऐसा नहीं है। यदि आप नहीं करते हैं तो आप विकृत मैक-ओ फाइलों की दुनिया में हैं। जब आप एएसएम हैकिंग शुरू कर रहे हैं तो फ़ाइल स्वरूप समस्याओं का निदान करने में मजेदार नहीं है।

+0

+1 रिवर्सिंग पुस्तक - उत्कृष्ट पुस्तक पर प्रयास करें। –

0

ऐसा कोई कारण नहीं है कि आपको क्यों नहीं करना चाहिए; असेंबली भाषा में ऐसा कुछ भी नहीं है जो आप उच्च स्तर की भाषा में नहीं कर सकते हैं जैसे कि सी

जहां तक ​​उपकरण जाते हैं, आप MacPorts इंस्टॉल करना और जीएनयू असेंबलर प्राप्त करना चाहते हैं। यह सबसे आसान तरीका हो सकता है या नहीं भी हो सकता है, लेकिन यह मुफ़्त है और आप नेट पर कहीं भी जीएनयू असेंबलर में यूनिक्स प्रोग्राम लिखने के लिए ट्यूटोरियल दस्तावेज पा सकते हैं।

1

एक्सकोड (यानी जीसीसी) को असेंबलर लिखने के लिए बहुत अच्छा समर्थन है। यह सीखने के लिए एक मजेदार बात है (हालांकि आपको इसकी बहुत आवश्यकता नहीं है), और आप जो भी सबसे खराब कर सकते हैं वह प्रोग्राम है जो आप लिख रहे हैं, सी में जैसा ही है। बस Google के लिए 'gcc inline asm x86 ट्यूटोरियल' और आप शुरुआती बिंदुओं के बहुत सारे मिलना चाहिए। चिंता न करें कि कुछ लिनक्स विशिष्ट प्रतीत होंगे, वे आम तौर पर एक्सकोड में भी काम करेंगे।

(संपादित करें) ... मान लीजिए कि आपके पास इंटेल मैक है; यदि नहीं तो 'x86' को 'ppc' से प्रतिस्थापित करें।

3

नासम/यास्म आपकी सबसे अच्छी शर्त है; जीसीसी इनलाइन सिंटैक्स काफी अपंग है और कई बार उपयोग करने के लिए बहुत दर्दनाक हो सकता है, साथ ही सचमुच कुछ चीजें हैं नहीं कर सकते हैं। नस्मत का मैक्रो सिंटैक्स भी अधिक उपयोगी है, एक ऐसी भाषा में देवता है जो असेंबली जैसी है जिसमें कोई अंतर्निहित टेम्पलेटिंग सुविधाएं नहीं हैं।

5

कोडांतरक भाषा हार्डवेयर मंच, नहीं ऑपरेटिंग सिस्टम से निर्धारित होता है। यह देखते हुए कि ओएस एक्स इंटेल प्लेटफ़ॉर्म पर चलता है और 64-बिट है, आपको x64 (जिसे AMD64 भी कहा जाता है) पर जानकारी चाहिए। X64 के बारे में दस्तावेज़ों के बहुत सारे लिंक के लिए विकिपीडिया आलेख (http://en.wikipedia.org/wiki/X86-64) देखें।

इसके अलावा, ओएस एक्स टूल्स दस्तावेज़ में x64 असेंबलर के बारे में बहुत सारी जानकारी हो सकती है। विशेष रूप से, नेटवाइड असेंबलर (NASM - http://developer.apple.com/documentation/DeveloperTools/nasm/nasmdoc0.html) में असेंबलर का उपयोग करके ओएस एक्स अनुप्रयोगों को बनाने के तरीके पर दस्तावेज़ हो सकते हैं।

+0

सीखना x86-64 एएसएम सीखने से पहले x86 एएसएम आपके पहले शब्द को सीखने से पहले एक महाकाव्य कविता लिखने जैसा है।इसमें इतनी सारी चीजें हैं जो नए लोगों की यात्रा करेंगे। निश्चित रूप से अनुशंसित नहीं है। –

+0

यह 64 बिट ओएसएक्स ऐप लिखने का प्रयास करता है; वे डिफ़ॉल्ट रूप से 32 बिट हैं। –

+0

अनुमोदित, मैं मैक डेवलपर नहीं हूं। हालांकि, ओएसएक्स 64-बिट है और http://www.apple.com/macosx/technology/64bit.html दावा करता है कि एक्सकोड 3.0 64-बिट ऐप्स बनाने का समर्थन करता है, तो क्या यह केवल डेवलपर की पसंद का मामला नहीं है? और यह जानकर कि आप निश्चित रूप से क्या करते हैं, लेकिन यह 32-बिट ऐप्स बनाने के लिए समान रूप से लागू होता है। –

1

here

मैं किसी Mac विधानसभा प्रोग्राम किया। यह MPW का उपयोग कर मोटोरोला 680x0 असेंबलर था। मैंने कोडवायरियर और प्रोजेक्टबिल्डर में कुछ बार पावरपीसी असेंबलर को छुआ है। अब प्रोजेक्टबिल्डर को एक्सकोड कहा जाता है, और इंटेल है। एंबलर एक्सकोड के भीतर कई उपकरणों में से एक है।

मैंने मूल रूप से ऐप्पल II पर असेंबलर सीखा: रोम में निर्मित 6502 मशीन भाषा मॉनीटर, स्वीट 16 मिनी-असेंबलर, और अन्य। बाद में, मैंने इंटेल 80186 असेंबलर का उपयोग सी कोड की धीमी बिट्स को तेज करने के लिए किया, और एक विश्वविद्यालय में इंटेल 80186 असेंबलर पर एक दिवसीय पाठ्यक्रम के लिए भुगतान किया गया। बाद में, मुझे मैक के लिए कुछ 680x0 असेंबली बनाए रखना पड़ा। वैसा बहुत समय पहले था।

मुझे नहीं लगता कि असेंबली न करने का कोई कारण नहीं है। सीखना बहुत अच्छा है। आप सब कुछ सीख सकते हैं। कम पर्याप्त स्तर डीबगर में ड्रॉप करें और अलग किए गए कोड को देखें।

मेरी सलाह है:

डर मत।

gcc -S hello.c -o hello.asm 

फिर आप को समझने में सक्षम हो जाएगा:

5

विधानसभा सीखने शुरू करने के लिए, आप सरल सी कार्यक्रमों के साथ शुरू करते हैं और जीसीसी पूछना -S विकल्प का उपयोग करने के लिए यह कोडांतरक कोड उत्पन्न करने के लिए करना चाह सकते हैं कार्यों को कैसे कॉल करें, तर्क पास करें, आदि

0

ऑपरेटिंग सिस्टम के साथ एक सिस्टम पर असेंबली भाषा लिखने की आवश्यकता के बारे में दो तीन चीजें हैं (जैसा कि 'नंगे धातु' असेंबली के विपरीत है जो स्वयं की दुनिया है):

  1. निर्देश सेट कैसे काम करता है - इंटेल एक्स 86 के लिए संसाधनों का भार यदि आपके पास इंटेल मैक है, तो पीपीसी के लिए अभी भी उचित सेट उदाहरण के लिए Mac OS X Internals

  2. इकट्ठा करने के लिए कैसे अपने कार्यक्रमों लिंक - अगर आप डेवलपर टूल स्थापित आप जीसीसी और जुड़े उपकरणों

    है
  3. कैसे ओएस से बात करने के लिए - यहाँ है जहां मैक विधानसभा एक बहुत कम अच्छी तरह से प्रलेखित है विंडोज या लिनक्स से। हो सकता है कि आपको समकक्ष सी प्रोग्राम लिखना पड़े और 'gcc -S' का उपयोग करके यह देखने के लिए कि कॉलिंग/स्टैक बहाली सम्मेलन उचित हैं। यह निर्भर करता है कि आप क्या करना चाहते हैं लेकिन एक मिनीियम पर आपको आईओ सिस्टम कॉल आवंटन की आवश्यकता है।

एक अच्छा प्रारंभिक बिंदु here है।

0

आप डेवलपर टूल स्थापित है, आप कर सकते हैं बस खुले टर्मिनल और टाइप रूप रखी है, तो (GNU Assembler - भाग के binutils)।

0

पीपीसी के लिए लाइट्सफ़ोफ़्ट

+0

साइट अब पीपीसी सॉफ्टवेयर प्रदान नहीं करती है। – Seki