दिलचस्प पोस्ट
"SMTP त्रुटि: प्रमाणीकृत नहीं किया जा सका" PHPMailer में क्या एक .net MySqlCommand में एक MySQL उपयोगकर्ता परिभाषित चर का उपयोग करना संभव है? IPhone 5 स्क्रीन रिज़ॉल्यूशन के लिए ऐप्स को कैसे विकसित या माइग्रेट करें? IPhone ऐप में कस्टम फोंट का प्रयोग करें डेटाबेस खोला नहीं जा सकता क्योंकि यह संस्करण 782 है। यह सर्वर संस्करण 706 और पहले का समर्थन करता है। डाउनग्रेड पथ समर्थित नहीं है JQuery $ .getScript () विधि का उपयोग करते हुए एकाधिक जेएस फ़ाइलों को कैसे शामिल करें I नीलेबर्ड वादों के साथ असिंक्रोनस अपवाद हैंडलिंग स्विफ्ट 2 में हटाए गए .toInt ()? एक दृश्य को केवल तभी निकालना जब कीबोर्ड इनपुट फ़ील्ड को कवर करता है कोणीय पोस्ट अपलोड की गई फ़ाइल मैं पाठ इनपुट फ़ील्ड में एक "खोज" बटन कैसे जोड़ूं? XElement का उपयोग नहीं करने वाले कस्टम एक्सएमएल से `डायरेक्टरी <int, string>` को सीरियललाइज करने के लिए कैसे करें? लोकलहोस्ट पर फेसबुक एप्लिकेशन चलाना जावास्क्रिप्ट में लांग प्रेस? कॉल विधि जब होम बटन एंड्रॉइड पर दबाया जाता है

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

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

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

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

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

धन्यवाद!

वेब के समाधान से एकत्रित समाधान "क्या मैं जीसीसी के साथ 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(); }