2014-09-11 2 views
3

어쨌든 GCC 또는 clang과 같은 C 컴파일러를 사용하여 어셈블리 출력에 매핑 된 C 코드가있는 어셈블리 출력을 생성합니다 (따라서 C 코드에서 어떤 어셈블리 블록이 표시되는지 볼 수 있습니다.) 리눅스 시스템에서? O3를 사용할 수있는 C 코드 조각의 출력을 이해하려고 노력하고 있지만 어셈블리 지식이 부족하기 때문에 힘든 시간을 보내고 있습니다.assemly to C 소스 코드

+1

이것은 찾고있는 것일 수 있습니다 : http://stackoverflow.com/questions/1289881/using-gcc-to-produce-readable-assembly –

+0

GCC, TCC, 숨은 참조와 함께'-S' 옵션 사용 –

+2

가장 빠른 방법은 [godbolt] (http://gcc.godbolt.org/#)를 사용하여 색상을 사용하여 C 코드를 어셈블리에 연결하는 것입니다. 당신은'-x c'를 써야하지만 너무 어렵지는 않습니다. 이전에 나는 당신을 [Online C++ compiler and evaluator] (http://stackoverflow.com/questions/3916000/online-c-compiler-and-evaluator)에 링크 시켰을 것이지만 최근에 슬프게도 삭제되었습니다. –

답변

0

-S 옵션을 gcc과 함께 사용하면 어셈블리 파일 출력을 생성 할 수 있습니다.

의 gcc -S file.c는

편집 : 당신이 assembly 출력과 C 코드 나란히 모두를 보려는 경우

사용 gdb -tui a.out :

(gdb) 레이아웃 분할

레이아웃 분할 명령은 창을 두 부분으로 나눕니다. 하나는 소스 코드를 표시하고 다른 하나는 해당 어셈블리입니다.

+0

OP는 출력에서 ​​C와 어셈블리를 모두 필요로합니다. '-S'는 AFAIK를하지 않습니다. – Michael

+0

@Michael Okay가 편집에 추가했습니다. –