दिलचस्प पोस्ट
वर्ण वेक्टर को कैसे सॉर्ट करने के लिए जहां तत्वों में आर में अक्षरों और संख्याएं होती हैं? आउटपुट स्वरूपण: गफ़्रारान में बहुत अधिक सफेद स्थान एरे को ऑब्जेक्ट में कनवर्ट करें मैं कैसे दो divs की स्क्रॉल स्थिति सिंक्रनाइज़ कर सकता हूँ? Mac OS X पर GNU sed का उपयोग कैसे करें क्या 0 और -0 वही हैं? कैसे अजगर में इनपुट स्ट्रीम फ्लश? विंडोज फॉर्म में किसी अन्य फॉर्म पर नियंत्रण का उपयोग करने का सर्वोत्तम तरीका है? PHP में आरएसए के साथ एन्क्रिप्ट और डिक्रिप्ट पाठ किसी अन्य कार्यपुस्तिका से VBA के माध्यम से डेटा कॉपी करें Facebook पेज के लिए "कभी-कभी समाप्त नहीं" पहुंच टोकन उत्पन्न करें मैं सशर्त ऑपरेटर का उपयोग कैसे करूं? कार्य क्रमबद्ध नहीं है: java.io.NotSerializableException जब कॉलिंग फ़ंक्शन को केवल क्लासेस पर ऑब्जेक्ट्स के क्लोजर पर कॉल नहीं कर रहा है क्या विंडोज 7 कर्नेल के प्रतीक से संबंधित कोई ज्ञात मुद्दा है? वेब। Xml में संसाधन-रिफ में क्या उपयोग किया जाता है?

क्या मैं जीसीसी के साथ x86 विधानसभा के इंटेल सिंटैक्स का उपयोग कर सकता हूं?

मैं एक छोटे से निम्न स्तर के कार्यक्रम लिखना चाहता हूं। इसके कुछ हिस्सों के लिए मुझे विधानसभा भाषा का उपयोग करना होगा, लेकिन बाकी कोड सी / सी ++ पर लिखा जाएगा।

इसलिए, अगर मैं असेंबली कोड के साथ सी / सी + + मिश्रण करने के लिए जीसीसी का उपयोग करूंगा, तो क्या मुझे एटी एंड टी सिंटैक्स का उपयोग करने की आवश्यकता है या मैं इंटेल सिंटैक्स का उपयोग कर सकता हूं? या आप किसी अन्य तरीके से सी / सी ++ और एएसएम (इंटेल सिंटैक्स) कैसे मिलाते हैं?

मुझे पता है कि शायद मेरे पास कोई विकल्प नहीं है और इसे एटी एंड टी सिंटैक्स का उपयोग करना चाहिए, लेकिन मुझे यकीन होना चाहिए ..

और अगर कोई विकल्प नहीं निकला है, जहां मैं एटी एंड टी सिंटैक्स के बारे में पूर्ण / आधिकारिक दस्तावेज पा सकता हूं?

धन्यवाद!

Solutions Collecting From Web of "क्या मैं जीसीसी के साथ x86 विधानसभा के इंटेल सिंटैक्स का उपयोग कर सकता हूं?"

यदि आप पृथक असेंबली फ़ाइलों का उपयोग कर रहे हैं, तो इंटेल सिंटैक्स का समर्थन करने के लिए गैस का निर्देश है:

 .intel_syntax noprefix 

जो इंटेल सिंटैक्स का उपयोग करता है और पंजीकरण नामों से पहले% उपसर्ग की आवश्यकता नहीं है।


यदि आप इनलाइन असेंबली का उपयोग कर रहे हैं, तो -masm=intel साथ संकलित कर सकते हैं

इनलाइन एएसएम की शुरुआत में .intel_syntax noprefix का उपयोग करना, और .att_syntax साथ वापस स्विच करना काम कर सकता है, लेकिन यदि आप किसी भी m बाधाओं का उपयोग करते हैं तो टूट जाएगा एटी एंड टी वाक्यविन्यास में अभी भी मेमोरी संदर्भ तैयार किया जाएगा।

आप निंजालज के रूप में इनसाइल असेंबली का प्रयोग कर सकते हैं- nmjalj के रूप में लिखा है, लेकिन जब आप इनलाइन असेंबली का उपयोग करते हुए सी / सी + हेडर शामिल करते हैं, तो त्रुटियों का कारण हो सकता है। साइगविन की त्रुटियों को पुन: उत्पन्न करने के लिए यह कोड है

 sample.cpp: #include <cstdint> #include <iostream> #include <boost/thread/future.hpp> int main(int argc, char* argv[]) { using Value = uint32_t; Value value = 0; asm volatile ( "mov %0, 1\n\t" // Intel syntax // "movl $1, %0\n\t" // AT&T syntax :"=r"(value)::); auto expr = [](void) -> Value { return 20; }; boost::unique_future<Value> func { boost::async(boost::launch::async, expr) }; std::cout << (value + func.get()); return 0; } 

जब मैंने यह कोड बनाया, तो मुझे नीचे त्रुटि संदेश मिला।

 g++ -E -std=c++11 -Wall -o sample.s sample.cpp g++ -std=c++11 -Wall -masm=intel -o sample sample.cpp -lboost_system -lboost_thread /tmp/ccuw1Qz5.s: Assembler messages: /tmp/ccuw1Qz5.s:1022: Error: operand size mismatch for `xadd' /tmp/ccuw1Qz5.s:1049: Error: no such instruction: `incl DWORD PTR [rax]' /tmp/ccuw1Qz5.s:1075: Error: no such instruction: `movl DWORD PTR [rcx],%eax' /tmp/ccuw1Qz5.s:1079: Error: no such instruction: `movl %eax,edx' /tmp/ccuw1Qz5.s:1080: Error: no such instruction: `incl edx' /tmp/ccuw1Qz5.s:1082: Error: no such instruction: `cmpxchgl edx,DWORD PTR [rcx]' 

इन त्रुटियों से बचने के लिए, इसे सी / सी ++ कोड से इनलाइन असेंबली (कोड का ऊपरी आधा) अलग करने की आवश्यकता होती है जो कि बढ़ावा: भविष्य और जैसे (कम आधा) की आवश्यकता होती है। -smm = intel विकल्प को। सीपीपी फाइलों को संकलित करने के लिए उपयोग किया जाता है जिसमें इंटेल सिंटैक्स इनलाइन असेंबली होती है, अन्य। सीपीपी फाइलों के लिए नहीं।

 sample.hpp: #include <cstdint> using Value = uint32_t; extern Value GetValue(void); sample1.cpp: compile with -masm=intel #include <iostream> #include "sample.hpp" int main(int argc, char* argv[]) { Value value = 0; asm volatile ( "mov %0, 1\n\t" // Intel syntax :"=r"(value)::); std::cout << (value + GetValue()); return 0; } sample2.cpp: compile without -masm=intel #include <boost/thread/future.hpp> #include "sample.hpp" Value GetValue(void) { auto expr = [](void) -> Value { return 20; }; boost::unique_future<Value> func { boost::async(boost::launch::async, expr) }; return func.get(); }