2012-02-18 5 views
13

यह हर बार मुझे परेशान करता है जब मैं -XX:+PrintAssembly का उपयोग हॉटस्पॉट के साथ करता हूं और भयानक एटी & टी वाक्यविन्यास को पढ़ना पड़ता है।हॉटस्पॉट 7 एचएसडीआई प्रिंटएस्क्रिप्ट्स इंटेल सिंटेक्स

क्या इंटेल वाक्यविन्यास का उपयोग करने के लिए इसे बताने का कोई तरीका है?

+0

सूचीबद्ध देख रास्ता है, जो प्रणाली आप पर चल रहे हैं के द्वारा कर रहे हैं? –

+0

@ पवन जैसा कि मैंने समझा था कि सभी ओएस के लिए एक बाइनरी थी इसलिए मुझे उम्मीद थी कि मुझे क्रॉसप्लेटफार्म काम करने का तरीका मिल सकता है। हालांकि ज्यादातर खुले एसयूएसई और विंडोज़। अफसोस की बात है कि आपका जवाब इंगित करता है - अगर मैं संकलन करते समय ऐसा विकल्प पारित कर सकता हूं, तो मुझे संदेह है कि ऐसा करने का कोई बेहतर तरीका है। कोशिश करेंगे। – Voo

+0

विंडोज़ के लिए, आपको डिफ़ॉल्ट रूप से इंटेल सिंटैक्स मिलना चाहिए !? –

उत्तर

17

आपको बस असंतुष्ट asm.h और binutils कोड पर कुछ विकल्प पार्स करने के लिए है

इंटेल Asm (जो मैं भी पसंद करते हैं) के लिए सिर्फ इसलिए

की तरह जोड़ने अल्पविरामों से निम्नलिखित

-XX:PrintAssemblyOptions=intel

आप विकल्पों गठबंधन करने के लिए की जरूरत है यह करने के एक hsdis विकल्प के रूप में मान्यता प्राप्त नहीं

-XX:PrintAssemblyOptions=intel,hsdis-help

कुछ भी disassembler को खिलाया जा जाएगा, इन विकल्पों में एक ही हैं जिन्हें आप से

objdump --help 

... <SNIP A lot of --help text %<> ... 
The following i386/x86-64 specific disassembler options are supported for use 
with the -M switch (multiple options should be separated by commas): 
    x86-64  Disassemble in 64bit mode 
    i386  Disassemble in 32bit mode 
    i8086  Disassemble in 16bit mode 
    att   Display instruction in AT&T syntax 
    intel  Display instruction in Intel syntax 
    att-mnemonic 
       Display instruction in AT&T mnemonic 
    intel-mnemonic 
       Display instruction in Intel mnemonic 
    addr64  Assume 64bit address size 
    addr32  Assume 32bit address size 
    addr16  Assume 16bit address size 
    data32  Assume 32bit data size 
    data16  Assume 16bit data size 
    suffix  Always display instruction suffix in AT&T syntax 
Report bugs to <http://www.sourceware.org/bugzilla/>. 
+1

वाह यह बहुत अच्छा है! यद्यपि वे वास्तव में कहीं भी इसका उल्लेख कर सकते थे - यहां तक ​​कि यह भी जानते हुए कि यह 'PrintAssemblyOptions' होना चाहिए, मुझे Google के बारे में कोई दस्तावेज नहीं मिल रहा है। – Voo

2

मुझे नहीं लगता कि ऐसा करने के लिए कोई मौजूदा तरीका है। लेकिन मुझे यह मिला है- Herehsdis का स्रोत है। आप -masm=intel को जीसीसी में पास करके Makefile बदल सकते हैं। और यदि यह काम करता है, अब से +PrintAssembly इंटेल सिंटैक्स असेंबली आउटपुट करना प्रारंभ करना चाहिए।

स्रोत प्राप्त करने के लिए step by step procedure यहां है, निर्माण करें और अंत में hsdis-arch.so प्राप्त करें जो कि डिस्प्लेबर्स काम करता है!

मैंने इसे स्वयं से नहीं देखा है। मैं तुम्हें इस काम करने के लिए :)

कुछ भी नहीं काम करता है, तो यह आपके साथ आराम कर चाहिए इच्छा AT&T Syntax :)

+0

धन्यवाद, लेकिन मेकफ़ाइल में मैं वास्तव में '-masm = intel' कहां जोड़ूं? मैंने अभी 'CFLAGS + = -masm = intel' किया है लेकिन यह चाल नहीं करता है। – Voo

+1

'CFLAGS' सही जगह है, लेकिन मुझे यकीन नहीं है कि यह आपके लिए क्यों काम नहीं कर रहा है। क्या 'hsdis-arch.so' उत्पन्न हो रहा है? इस डीबग विकल्प को जोड़ने के बाद इसमें कोई अंतर है? –

+0

इतनी फ़ाइल जेनरेट की गई है, लेकिन आउटपुट इसके बिना ही है (यानी अभी भी एटी एंड टी) - कोई त्रुटि संदेश भी नहीं है। और हाँ, अगर मेरे पास यह महत्वपूर्ण है तो मेरे रास्ते में नस्ल स्थापित है? – Voo

संबंधित मुद्दे