Mi piacerebbe ottenere le linee di origine C in linea con l'output dell'assieme per vedere quale codice viene generato.Come posso ottenere le linee sorgente in linea con l'output dell'assieme usando GCC?
Ho provato le opzioni GCC come -S
-Wa,-ahlms
(e anche -Wa,--gstabs
perché l'ho letto da qualche parte).
Oh! A proposito, io sono su un Mac, quindi non ho objdump
.
(Spiacente, questo è breve, devo scendere dal treno!)
uscita di 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:
Sembra che quello che voglio fare non possa essere fatto facilmente su un Mac. 1) non ci sono 'objdump' e' otools' non fa il lavoro neanche. 2) 'gdb' nelle versioni più recenti ha' disas/m '- il Mac ha un' gdb' più vecchio. 3) Sospetto che l'output assembler di 'GCC' non sia molto utile su Mac. 4) Perché dovrei essere costretto a usare 'XCode'? (Non rispondere a questo). –
philcolbourn
Poco dopo questa domanda ho installato Linux e rinuncio a OS-X, ma Douglas sembra essere più vicino a una soluzione. – philcolbourn
Se stai osservando piccole porzioni di codice Godbolt può essere una soluzione più semplice come me [spiega in questa risposta] (http://stackoverflow.com/a/25781924/1708801). –