this question के रूप में दिखाता है, जी ++ के साथ, मैं g++ -S -masm=intel test.cpp
कर सकते हैं। इसके अलावा, बजना के साथ, मैं clang++ -S test.cpp
कर सकते हैं, लेकिन -masm=intel
बजना (warning argument unused during compilation: -masm=intel
) द्वारा समर्थित नहीं है। मैं क्लैंग के साथ इंटेल सिंटैक्स कैसे प्राप्त करूं?इंटेल वाक्यविन्यास में क्लैंग के साथ असेंबली कोड कैसे उत्पन्न करें?
उत्तर
यह बजना मिलना चाहिए इंटेल वाक्य रचना के साथ विधानसभा कोड फेंकना:
clang++ -S -mllvm --x86-asm-syntax=intel test.cpp
आप -mllvm <arg>
का उपयोग बजना कमांड लाइन से LLVM विकल्पों में पारित करने के लिए कर सकते हैं। अफसोस की बात यह विकल्प अच्छी तरह से प्रलेखित नहीं प्रतीत होता है, और इस प्रकार मैं इसे केवल llvm मेलिंग सूचियों के माध्यम से ब्राउज़ करके पाया।
noted below by @thakis रूप में, यह नहीं रह गया है बजना (3.5+) के नए संस्करण में जरूरत के रूप में यह अब -masm=intel
वाक्य रचना का समर्थन कर रहा है।
यह मानकर आप बजना हो सकता है सामान्य LLVM बाइट कोड फेंकना, आप तो llc उपयोग कर सकते हैं विधानसभा भाषा के संकलन, और इसके --x86-asm-syntax=intel
विकल्प का उपयोग इंटेल वाक्य रचना में परिणाम प्राप्त करने के लिए।
फिर से धन्यवाद। मैं भी पता चला 'डिफ़ॉल्ट रूप से llc' पर (-02) जीसीसी और बजना भी अनुकूलन नहीं है (-O0) डिफ़ॉल्ट रूप से उपयोग करते हुए (यह मुझे हमेशा के लिए ले लिया यह पता लगाने की क्यों विधानसभा उत्पादन अलग था) अनुकूलन बदल जाता है। –
क्लैंग r208683 (क्लैंग 3.5+) के रूप में, यह -masm=intel
को समझता है। तो यदि आपका क्लैंग पर्याप्त नया है, तो आप इसका उपयोग कर सकते हैं।
@JerryCoffin: धन्यवाद, मैं बजना के साथ एक '.bc' फ़ाइल और फिर सफलतापूर्वक उत्पादन इंटेल विधानसभा' llc' साथ उत्पन्न। क्या यह जवाब बना रहा है? –
ओह, मुझे लगता है कि यह कोई समस्या नहीं है। –