2010-04-16 12 views
6

पर असेंबली प्रोग्रामिंग मैं हिम तेंदुए (10.6.3) के साथ मैक पर हूं। मैंने सुना है कि जिस असेंबली भाषा के साथ मैं काम करता हूं उसे आपके द्वारा उपयोग किए जाने वाले चिपसेट के साथ मान्य होना चाहिए। मैं इसके लिए बिल्कुल नया हूं, मेरे पास सी और ऑब्जेक्टिव-सी प्रोग्रामिंग और PHP में लगभग मजबूत पृष्ठभूमि में मूल पृष्ठभूमि है। मैं हमेशा देखना चाहता हूं कि असेंबली क्या है।मैक

मैं जिस ट्यूटोरियल को देख रहा हूं वह VTC [link] है।

मैं क्या जानना चाहता हूं: क्या ट्यूटोरियल हैं जो मैक पर असेंबली संस्करण के साथ संगत करने वाला हूं?

क्षमा करें, मैं इस भाषा के लिए पूरी तरह से नया हूं, हालांकि मुझे दिन में वापस आने के तरीके का अध्ययन करना याद है। मेरे पास एक्सकोड है और मैं क्या सोच रहा हूं कि एक्सकोड में असेंबली के साथ काम करने के लिए मैं किस प्रकार का दस्तावेज़ खोलूंगा और क्या मैक हेक्स संपादक में बनाया गया है (जब इसकी आवश्यकता होने पर समय आता है)?

धन्यवाद

उत्तर

5

आपके द्वारा उपयोग की जाने वाली असेंबली भाषा आपके ओएस पर निर्भर नहीं है बल्कि आपके सीपीयू के निर्देश सेट पर निर्भर है। आपके मैक संस्करण के आधार पर, मैं कहूंगा कि आप इंटेल प्रोसेसर का उपयोग कर रहे हैं - तो आप x86 या amd64 असेंबली सीखना चाहेंगे।

+1

व्यक्तिगत रूप से, मुझे x86 आसान होना लगता है। इसके अलावा amd64 – Earlz

+4

की तुलना में इस बिंदु पर x86 के बारे में बहुत अधिक जानकारी है। यह थोड़ा भ्रामक है - भाषा सीपीयू द्वारा है, लेकिन सिस्टम कॉल प्लेटफॉर्म पर अलग हैं, इसलिए लिनक्स के लिए ट्यूटोरियल मैक के लिए काम नहीं करेगा, उदाहरण के लिए (और मैक सिस्टम कॉल बहुत अच्छी तरह से प्रलेखित नहीं हैं)। – shosti

+0

सच - लेकिन इस पर विचार करें: मैक ओएसएक्स यूनिक्स आधारित है। –

0

एक असेंबली भाषा निर्देश वास्तुकला विशिष्ट है। चिप्स एक निर्देश वास्तुकला का एक तात्कालिकता है।

मेरी राय में, आपको टेक्स्टवंग्लर प्राप्त करने और सीधे जीसीसी के साथ संकलित करके सबसे अच्छी सेवा दी जाती है।

फ़ाइल एक्सटेंशन जो आप खोज रहे हैं .s है।

+0

'.s' आमतौर पर कम इस्तेमाल किया एटी एंड टी (जीएनयू के रूप में) वाक्य रचना विधानसभा के लिए प्रयोग किया जाता है, जबकि' .asm' आमतौर पर इंटेल (NASM/yasm/TASM/MASM) वाक्य रचना विधानसभा के लिए प्रयोग किया जाता है। – Earlz

+0

जीसीसी एटी एंड टी सिंटैक्स का उपयोग करता है: मैक पर संकलन, आप हुड के तहत अधिकांश समय जीसीसी का उपयोग कर रहे हैं। –

+2

@ पुल द्वारा "कम इस्तेमाल किया" मेरा मतलब है "हाथ से कम लिखा गया" 'जीएनयू के रूप में वाक्यविन्यास को अनुकूलित किया गया था और संकलक द्वारा उत्पन्न किया गया था। यही कारण है कि 'जीएनयू के रूप में' कुख्यात रूप से भयानक त्रुटि प्रबंधन और पहचान है। यह जीसीसी से सही कोड के लिए उपयोग किया जाता है। यह अकेला कारण है कि मैं इसे शुरुआती – Earlz

0

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

एक्सकोड सादे पाठ फ़ाइलों के साथ काम करता है, मुझे विश्वास है। Hex Fiend आपकी हेक्स संपादन आवश्यकताओं के लिए, यदि आप उनके पास आते हैं।

ध्यान रखें, असेंबली बेहद कम-स्तर है। कोई ifs, whiles, या वास्तव में कोई नियंत्रण लूप सहेजने के लिए "ऑपरेशन और गोटो" के परिणामस्वरूप (शून्य) बराबर नहीं है (जब तक कि आपका असेंबलर उन्हें सिंटैक्टिक चीनी के रूप में प्रदान नहीं करता है, मेरी राय में किस प्रकार का उद्देश्य धड़कता है)। PHP ज्ञान सबसे खतरनाक रूप से उपयोगी होगा। हालांकि, सी ज्ञान आपको अच्छी तरह से सेवा करनी चाहिए, हालांकि।

+0

मैक्रोज़ का उपयोग करके आप 'ifs' और' whiles' प्राप्त कर सकते हैं। वास्तव में –

+1

। "[...] वाक्य रचनात्मक चीनी के रूप में, मेरी राय में किस प्रकार का उद्देश्य धड़कता है।" – Kyte

1

असेंबली लेने का एक अच्छा तरीका है कि आप को खेलने के लिए एक एम्बेडेड डिवाइस प्राप्त करें।

टीआई के पास खेलने के लिए कुछ nice, inexpensive devkits है। मैंने क्रोनोस किट ($ 50) के साथ चारों ओर पोक किया है जिसमें आपके कंप्यूटर के वायरलेस लिंक के साथ एक प्रोग्राम करने योग्य एमएसपी 430 माइक्रोकंट्रोलर के साथ डिजिटल घड़ी है। यह बहुत प्यारा है।

अद्यतन: मैं Arduino का उल्लेख करना भूल गया। यह दिलचस्प सुंदर परिधीय और परियोजनाओं के साथ ऑनलाइन एक सुंदर निफ्टी खुला मंच है।

0

लिंक किए गए ट्यूटोरियल ऐसा लगता है कि वे NASM का उपयोग करते हैं, जो मैक के साथ शामिल है।हालांकि, सिस्टम कॉल आमतौर पर विभिन्न प्लेटफार्मों पर अलग होते हैं (वे मैक और लिनक्स के बीच बहुत अलग होते हैं), और ट्यूटोरियल को देखे बिना, यह जानना मुश्किल है कि वे विभिन्न प्लेटफॉर्म को लक्षित करेंगे (हालांकि मुझे लगता है कि नहीं)। एक बेहतर शर्त SPIM स्थापित करने और एमआईपीएस असेंबली सीखने के लिए हो सकती है, जो किसी भी तरह x86 से अधिक सरल है।

0

मैक पर असेंबली कोड चलाना आपके से सिर्फ 3 कदम दूर है। यह एक्ससीडीईई का उपयोग करके किया जा सकता है लेकिन NASM कमांड लाइन टूल का उपयोग करना बेहतर है।

बस का पालन करें:

  1. सबसे पहले इस आदेश nasm -f macho64 myFile.asm
  2. भागो obj फ़ाइल का उपयोग करते हुए आदेश ld -macosx_version_min 10.7.0 -lSystem -o OutPutFile myFile.o && ./64
का उपयोग कर उत्पादन को देखने के लिए obj फ़ाइल में Homebrew brew install nasm
  • परिवर्तित .asm फ़ाइल का उपयोग कर स्थापित करें एनएएसएम

    MyFile.asm नामक सरल टेक्स्ट फ़ाइल आपकी सुविधा के लिए नीचे लिखा गया है।

    global start 
    section .text 
    
    start: 
        mov  rax, 0x2000004 ; write 
        mov  rdi, 1 ; stdout 
        mov  rsi, msg 
        mov  rdx, msg.len 
        syscall 
    
        mov  rax, 0x2000001 ; exit 
        mov  rdi, 0 
        syscall 
    
    section .data 
    
    msg: db  "Assalam O Alaikum Dear", 10 
    .len: equ  $ - msg 
    
  • +0

    या बस XCODE में जीआईटी से रन असेंबली कोड को कोड डाउनलोड करें। https://github.com/akhzarna/AssemblyLanguage –