저는 c 언어를 처음 접했고 c 코드를 볼 때 스택, 레지스터, 메모리, 코드가 어떻게 작동하는지에 대한 강한 감각을 가질 수 있도록 c 언어를 어셈블리 언어로 매핑하는 직관을 확립하고 싶습니다. 나는 c와 어셈블리 간의 관계보다는 어셈블리 구문에 주로 초점을 맞춘 어셈블리 언어 책을 여러 권 읽었습니다. c와 어셈블리 언어 사이의지도에 대한 그런 책을 어디서 찾을 수 있는지 아는 사람이 있습니까?
그런 책이 존재하는지 모르겠습니다 (만약 있다면 컴파일러에 관한 책일 것입니다). 그러나 더 쉬운 해결책이 있습니다. 시도해보십시오.
C 코드를 작성한 다음 디버그 기호로 컴파일합니다 (이 지침은 Linux를 가정 함).
gcc foo.c -o foo
그런 다음 디버거를 사용하십시오.
gdb ./foo
break MyFunction
run
disass
이것은에 중단 점을 설정 한 MyFunction
다음 해당 중단 점에 도달 할 때까지 프로그램을 실행합니다. disass
해당 함수에 대한 어셈블리를 인쇄합니다. 를 사용 stepi
하여 한 번에 하나의 명령 next
을 단계적으로 수행 하거나 한 번에 하나의 C 라인을 단계적 으로 수행 할 수 있습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다