2012-05-22 27 views
8

मैं 64 बिट विंडोज असेंबली प्रोग्राम करना चाहता हूं (अधिमानतः NASM का उपयोग करना)। मैंने काफी देखा है लेकिन Google पर लेकिन ऐसा लगता है कि मुझे 64 बिट विंडोज कंपाइलर नहीं मिल रहा है। कुछ साइट ने ml64 का उल्लेख किया लेकिन ऐसा लगता है कि यह अब वीसी ++ में शामिल नहीं है। मैंने 32 बिट असेंबली के साथ प्रयास किया है, लेकिन जाहिर है कि यह मेरी 64 बिट मशीन पर बस दुर्घटनाग्रस्त हो गया है। क्या 64 बिट विंडोज़ मशीन पर 32 बिट असेंबली अनुप्रयोगों को लिखना, संकलित करना और चलाने के लिए संभव है? या इसे 64 बिट्स के लिए लिखा और संकलित किया जाना चाहिए?64-बिट विंडोज असेंबलर

धन्यवाद।

+0

रिकॉर्ड के लिए, ml64.exe VS2010 के अपने स्थापना में शामिल है। मुझे यकीन नहीं है कि यह एक्सप्रेस संस्करण में शामिल है हालांकि ... – PinnyM

+1

वीएस -2010 एक्सप्रेस उपयोगकर्ता यहां, ml64.exe विजुअल स्टूडियो/वीसी/बिन/amd64 और bin/x86_amd64 फ़ोल्डर्स में मौजूद है। – DCoder

+0

यदि आप NASM का उपयोग करना चाहते हैं, तो बस http://nasm.us पर जाएं और NASM के Win32 संस्करण को डाउनलोड करें। यह 64-बिट सिस्टम पर चलाएगा और यह 64-बिट अनुप्रयोग बनाएगा। –

उत्तर

6

यास्म (*) एक आधुनिक, बहु-मंच NASM-rewritten assembler है जो x86 और AMD64/x86-64 निर्देश सेट दोनों के लिए संयोजन करने में सक्षम है।

हालांकि ... आपको शायद इसका अर्थ यह है कि आपको लिंकर को निष्पादित करने योग्य फ़ाइल बनाने के लिए एकत्रित ऑब्जेक्ट कोड/फ़ाइल (लिंक) को जोड़ने के लिए चाहिए। कम से कम पूरी तरह से नि: शुल्क मिनीजीडब्लू (विंडोज़ के लिए न्यूनतम जीएनयू) प्रोजेक्ट पैकेज एक लिंकर (एलडी कहा जाता है) के साथ जहाजों को ऑब्जेक्ट फाइलों (ईएलएफ और पीई ऑब्जेक्ट प्रारूप, कम से कम) से 32- और 64-बिट विंडोज एक्जिक्यूटिव दोनों को इकट्ठा करने में सक्षम है।

आप निश्चित रूप से 64-बिट वातावरण में 32-बिट परियोजनाओं को पार-संकलित/निर्माण कर सकते हैं और इसके विपरीत, आप असेंबलर और लिंकर को सही कमांड लाइन पैरामीटर प्रदान करते हैं। कृपया अधिक सटीक विवरण के लिए अपने choise के टूल के दस्तावेज़ों का संदर्भ लें।

*) http://yasm.tortall.net/

+0

मुझे लगता है कि एलडी सिर्फ लिंकर है .. –

+0

यह सही है। इसे इंगित करने के लिए धन्यवाद, मैंने जल्दबाजी में संदर्भ को पूरी तरह गलत समझा और शब्दावली को मिश्रित किया। मैंने अधिक विस्तार के लिए उत्तर संपादित और बढ़ाया है। – zxcdw

+0

आपकी पोस्ट के लिए बहुत बहुत धन्यवाद। मैं इसे जोड़ने के लिए एलडी का उपयोग कर रहा हूं लेकिन ऐसा लगता है कि यह अभी भी दुर्घटनाग्रस्त है। क्या आपके लिए असेंबली कोड के स्निपेट के साथ मुझे आपूर्ति करना संभव है जो यम के साथ संकलित हो सकता है और 64-बिट सिस्टम पर लिंक किया जा सकता है, लेकिन 32-बिट असेंबली में लिखा गया है? इसे कुछ भी करने की ज़रूरत नहीं है। क्रैश किए बिना बस संकलित करें और चलाएं। वह महान होगा। –

3

64-बिट विंडोज़ पर 32-बिट असेंबली लिखना, इकट्ठा करना और चलाने के लिए संभव है। मैंने अपने विंडोज 7 एक्स 64 मशीन पर masm32 में कुछ उपयोगिताएं लिखी हैं। यदि आप 64-बिट कोड को इकट्ठा करना चाहते हैं, तो मेरा मानना ​​है कि एफएएसएम 64-बिट ऑब्जेक्ट कोड का समर्थन करता है।