코드:
#include <stdlib.h>
int a = 0xa;
const char b[] = "d_str";
int c;
int foo(int arg) {
int d = 0xd;
return 0;
}
int main()
{
int *e = malloc(sizeof(*e));
return 0;
}
문제 및 풀이:
1. a가 위치하는 세그먼트는 어디인가?
풀이: a는 초기화된 전역 변수이므로, 데이터 세그먼트에 위치한다.
2. "d_str"가 위치하는 세그먼트는 어디인가?
풀이: "d_str"은 전역 상수이므로 read-only data에 해당한다.
3. e는 어느 세그먼트의 데이터를 가리키는가?
풀이: e는 동적으로 할당받은 힙 세그먼트의 주소를 가리킨다
4. c가 위치하는 세그먼트는 어디인가?
풀이: c는 초기화되지 않은 전역 변수이므로 bss에 위치한다
5. b가 위치하는 세그먼트는 어디인가?
풀이: b는 전역 상수로서 read only data에 해당한다
6. foo가 위치하는 세그먼트는 어디인가?
풀이: foo는 실행 가능한 함수 코드로서, 코드 세그먼트에 위치한다
7. d가 위치하는 세그먼트는 어디인가?
풀이: d는 함수 내에서 선언된 지역 변수이므로, 스택 세그먼트에 위치한다
'DreamHack: System Hacking > F Stage 2' 카테고리의 다른 글
Background: x86 Assembly Essential Part(2) 스택, 프로시저, 시스템 콜 (0) | 2023.03.31 |
---|---|
Background: x86 Assembly Essential Part(1) 어셈블리 명령어 (0) | 2023.03.31 |
Background: Linux Memory Layout (0) | 2023.03.31 |
Quiz: Computer Architecture (0) | 2023.03.31 |
Background: Computer Architecture (0) | 2023.03.31 |