✅ 목표 (Goal)

이런 간단한 코드가 있다 치자.

#include <stdio.h>

int han_int;		//a 초기화X 전역 변수 bss
int byul_int = 15;	//b 초기화O 전역 변수 data

int main() {		//c
	
	int good;		//d stack
	char* house;	//e stack

	han_int = 10;	//f
	han_int++;		//g
	good = good + 5;//h
	good++;			//i

	house = malloc(10);//j heap
	return 0;
}

포인터 형 변환 및 포인터 앨리어싱

a와 b는 서로 다른 영역에 저장됨

.text_start와.data_start 그리고.bss_start

빌드하면 아래와 같은 기계어 코드로 바뀐다.

| int main()
6| {
SR:00000314|E1A0C00D__main:_____mov_____r12,r13
SR:00000318|E92DD800 stmdb r13!,{r11-r12,r14,pc}
SR:0000031C|E24CB004 sub r11,r12,#0x4
SR:00000320|E24DD008 sub r13,r13,#0x8
| int good;
| char *house;
|
10| han_int=10;

Hello, LinkScript