어셈블리 출력과 함께 C 소스 라인을 인라인으로 만들어 어떤 코드가 생성되는지 확인하고 싶습니다.GCC를 사용하여 어셈블리 출력으로 인라인 라인을 인라인 할 수 있습니까?
-S
-Wa,-ahlms
과 같은 GCC 옵션을 사용해 보았습니다 (심지어 어딘가에서 읽을 수 있기 때문에 -Wa,--gstabs
).
오! BTW, 나는 Mac에있어 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:
마치 Mac에서 쉽게 할 수없는 것처럼 보입니다. 1) objdump가없고 otools도 작업을 수행하지 않습니다. 2) 최신 버전의'gdb'는'disas/m'입니다 - Mac은 오래된'gdb'를 가지고 있습니다. 3) 나는'GCC '의 어셈블러 출력이 맥에서별로 도움이되지 않는다고 생각한다. 4) 왜 Xcode를 사용해야합니까? (대답하지 마십시오). –
philcolbourn
이 질문 직후 리눅스를 설치하고 OS-X를 포기했지만 더글라스는 해결책에 더 가깝습니다. – philcolbourn
코드의 작은 부분을보고 있다면 [이 해답에서 설명] (http://stackoverflow.com/a/25781924/1708801)과 같이 간단한 솔루션이 될 수 있습니다. –