인프런 커뮤니티 질문&답변

박영숙님의 프로필 이미지
박영숙

작성한 질문수

독하게 시작하는 C 프로그래밍

[필수 실습 문제] 잘못된 메모리 복사

선생님 디스어셈블리를 활용해서 코드를 보다보니~~

해결된 질문

작성

·

177

0

선생님 디스어셈블리를 활용해서 코드를 보다보니 제 소스코드 위에서도 작업을 하는것 같고 아래쪽에서도 작업이 이루어 지더라구요 위쪽에서는 add byte ptr [rax],al 아래쪽에서는 뭐가 쫌 일어나다가 00007FF7A71E1001 int 3 요런 명령이 나오더라구요~~ 요게 보니까 제소스코드 위아래로 c컴파일러?가 다른 작업을 하고 있는건가요?? 잘 몰라서 질문을 제대로 한건지도 모르겠네요 ㅠㅠ

답변 1

1

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

컴파일러가 다른 작업을 하는 것이 아니라 내가 작성한 코드 외에 추가로 코드가 더 들어가는 것입니다.

특히 디버그 모드로 프로그램을 빌드 할 경우 런타임 오류를 추적하기 위한 캐너리 비트를 추가하도록 스택 구조를 운영하거나 함수 반환 시 스택 프레임 손상이 없는지 검사하는 등 다양한 코드가 더 추가됩니다. 그 코드를 추가한 것은 물론 컴파일러 입니다. 참고하시기 바랍니다. 😄

박영숙님의 프로필 이미지
박영숙
질문자

네 답변너무 감사합니다~~ c언어는 뭔가 순정같은 느낌이라 다른 코드같은건 별로 안넣을줄 알았는데 짧은 코드에도 엄청나게 다른 코드가 추가되는군요!! 이 코드를 다 보고 읽으신다는 분들은 컴터랑 별로 차이가 없으신거 같아요 ㅠㅠ.
혹시 이 글 보실다른 분들에게 추가로 말씀드리면 더계속 내리니까 물음표가 나오는데 요게 이 프로세스랑은 이제 상관없는 메모리들인거 같아요~~ 심심하면 내려보세요

박영숙님의 프로필 이미지
박영숙

작성한 질문수

질문하기