선생님 디스어셈블리를 활용해서 코드를 보다보니~~
선생님 디스어셈블리를 활용해서 코드를 보다보니 제 소스코드 위에서도 작업을 하는것 같고 아래쪽에서도 작업이 이루어 지더라구요 위쪽에서는 add byte ptr [rax],al 아래쪽에서는 뭐가 쫌 일어나다가 00007FF7A71E1001 int 3 요런 명령이 나오더라구요~~ 요게 보니까 제소스코드 위아래로 c컴파일러?가 다른 작업을 하고 있는건가요?? 잘 몰라서 질문을 제대로 한건지도 모르겠네요 ㅠㅠ
답변 1
1
컴파일러가 다른 작업을 하는 것이 아니라 내가 작성한 코드 외에 추가로 코드가 더 들어가는 것입니다.
특히 디버그 모드로 프로그램을 빌드 할 경우 런타임 오류를 추적하기 위한 캐너리 비트를 추가하도록 스택 구조를 운영하거나 함수 반환 시 스택 프레임 손상이 없는지 검사하는 등 다양한 코드가 더 추가됩니다. 그 코드를 추가한 것은 물론 컴파일러 입니다. 참고하시기 바랍니다. 😄
0
네 답변너무 감사합니다~~ c언어는 뭔가 순정같은 느낌이라 다른 코드같은건 별로 안넣을줄 알았는데 짧은 코드에도 엄청나게 다른 코드가 추가되는군요!! 이 코드를 다 보고 읽으신다는 분들은 컴터랑 별로 차이가 없으신거 같아요 ㅠㅠ.
혹시 이 글 보실다른 분들에게 추가로 말씀드리면 더계속 내리니까 물음표가 나오는데 요게 이 프로세스랑은 이제 상관없는 메모리들인거 같아요~~ 심심하면 내려보세요
scanf("%d\n") 의미
0
20
1
주소 연산자(&) 간접 지정자(*) 반대 개념
0
33
1
Virtual Memory, Memory, Memory mapping tables
0
51
1
샘플코드 출력 오류 발생 질문드립니다
0
63
2
값의 교환에 사용되는 변수의 위치.
0
88
2
메모리 비교에 관한 질문
0
81
2
문자열 Null
0
63
1
C, C++
0
88
2
문자열 입출력 코드 에러
0
60
2
선생님! 120화 2분 50초 질문입니다.
0
67
1
caller 가 메모리 할당 해제를 할 때의 문제점 질문
0
64
2
단축키 맞는지 여부 문의드립니다.
0
60
2
문자열을 사용하는 이중 포인터에 대하여 질문합니다
0
66
1
char 포인터 변수의 크기에 대하여 제가 이해한 것이 맞을까요
0
78
2
용어 설명 필요
0
57
2
stdin, stdout
0
71
2
필수 실습 (최댓값을 반환하는 함수)
0
93
2
아......ㅠㅠ
0
100
2
버퍼 내 엔터
0
72
1
2진수 뺄셈에서 carry-out
0
112
2
union 식별자는 실무에서 보통 어디에서 사용하나요?
0
80
2
필수실습문제 공부법 (진도 vs 복습)
0
104
2
예제파일 다운로드
0
79
2
Visial Studio Code 를 설치해서 사용해도 수업을 따라가는데 지장이 있나요?
0
120
3





