मैं यह देखने के लिए कि कौन सा कोड उत्पन्न किया जा रहा है, मैं असेंबली आउटपुट के साथ सी स्रोत लाइन इनलाइन प्राप्त करना चाहता हूं।जीसीसी का उपयोग करके असेंबली आउटपुट के साथ स्रोत लाइन इनलाइन कैसे प्राप्त कर सकता हूं?
मैंने -S
-Wa,-ahlms
(और यहां तक कि -Wa,--gstabs
'कारण जीसीसी विकल्प की कोशिश की है क्योंकि मैंने इसे कहीं पढ़ा है)।
ओह! बीटीडब्ल्यू, मैं मैक पर हूं इसलिए मेरे पास objdump
नहीं है।
(क्षमा करें यह कम है, मैं ट्रेन से प्राप्त करने के लिए है!)
gcc pc-clisp.c -S -g -fverbose-asm -fnested-functions
.globl _getBool
_getBool:
LFB32:
LM21:
pushl %ebp #
LCFI30:
movl %esp, %ebp #,
LCFI31:
subl $8, %esp #,
LCFI32:
LM22:
movzbl 8(%ebp), %eax # atom.pred, D.4112
movzbl %al, %eax # D.4112, D.4113
andl $-16, %eax #, D.4114
sarl $4, %eax #, D.4115
testl %eax, %eax # D.4115
setne %al #, tmp64
movzbl %al, %eax # tmp64, D.4111
leave
ret
LFE32:
ऐसा लगता है कि मैं जो करना चाहता हूं उसे मैक पर आसानी से नहीं किया जा सकता है। 1) कोई 'ओब्जडम्प' नहीं है और 'ओटोल्स' नौकरी भी नहीं करता है। 2) नए संस्करणों में 'gdb' में' disas/m 'है - मैक में पुराना' gdb' है। 3) मुझे संदेह है कि मैक पर 'जीसीसी' का असेंबलर आउटपुट बहुत उपयोगी नहीं है। 4) मुझे 'एक्सकोड' का उपयोग करने के लिए मजबूर क्यों किया जाना चाहिए? (उसको जवाब न दें)। –
philcolbourn
इस प्रश्न के तुरंत बाद मैंने लिनक्स स्थापित किया और ओएस-एक्स पर छोड़ दिया, लेकिन डगलस एक समाधान के करीब प्रतीत होता है। – philcolbourn
यदि आप कोड गोडबॉल्ट के छोटे हिस्सों को देख रहे हैं तो यह एक आसान समाधान हो सकता है क्योंकि मैं [इस उत्तर में समझाता हूं] (http://stackoverflow.com/a/25781924/1708801)। –