2012-06-12 25 views
46

this question के रूप में दिखाता है, जी ++ के साथ, मैं g++ -S -masm=intel test.cpp कर सकते हैं। इसके अलावा, बजना के साथ, मैं clang++ -S test.cpp कर सकते हैं, लेकिन -masm=intel बजना (warning argument unused during compilation: -masm=intel) द्वारा समर्थित नहीं है। मैं क्लैंग के साथ इंटेल सिंटैक्स कैसे प्राप्त करूं?इंटेल वाक्यविन्यास में क्लैंग के साथ असेंबली कोड कैसे उत्पन्न करें?

+0

@JerryCoffin: धन्यवाद, मैं बजना के साथ एक '.bc' फ़ाइल और फिर सफलतापूर्वक उत्पादन इंटेल विधानसभा' llc' साथ उत्पन्न। क्या यह जवाब बना रहा है? –

+0

ओह, मुझे लगता है कि यह कोई समस्या नहीं है। –

उत्तर

85

यह बजना मिलना चाहिए इंटेल वाक्य रचना के साथ विधानसभा कोड फेंकना:

clang++ -S -mllvm --x86-asm-syntax=intel test.cpp 

आप -mllvm <arg> का उपयोग बजना कमांड लाइन से LLVM विकल्पों में पारित करने के लिए कर सकते हैं। अफसोस की बात यह विकल्प अच्छी तरह से प्रलेखित नहीं प्रतीत होता है, और इस प्रकार मैं इसे केवल llvm मेलिंग सूचियों के माध्यम से ब्राउज़ करके पाया।


noted below by @thakis रूप में, यह नहीं रह गया है बजना (3.5+) के नए संस्करण में जरूरत के रूप में यह अब -masm=intel वाक्य रचना का समर्थन कर रहा है।

+0

उत्कृष्ट जानकारी, धन्यवाद! –

+0

+1: बढ़िया, ठीक वही जो मैं खोज रहा था। – Leo

+2

http://llvm.org/bugs/show_bug.cgi?id=17465 -masm = intel और इसके बाद के लिए समर्थन का अनुरोध करता है। – Trass3r

16

यह मानकर आप बजना हो सकता है सामान्य LLVM बाइट कोड फेंकना, आप तो llc उपयोग कर सकते हैं विधानसभा भाषा के संकलन, और इसके --x86-asm-syntax=intel विकल्प का उपयोग इंटेल वाक्य रचना में परिणाम प्राप्त करने के लिए।

+0

फिर से धन्यवाद। मैं भी पता चला 'डिफ़ॉल्ट रूप से llc' पर (-02) जीसीसी और बजना भी अनुकूलन नहीं है (-O0) डिफ़ॉल्ट रूप से उपयोग करते हुए (यह मुझे हमेशा के लिए ले लिया यह पता लगाने की क्यों विधानसभा उत्पादन अलग था) अनुकूलन बदल जाता है। –

24

क्लैंग r208683 (क्लैंग 3.5+) के रूप में, यह -masm=intel को समझता है। तो यदि आपका क्लैंग पर्याप्त नया है, तो आप इसका उपयोग कर सकते हैं।