‣
이런 간단한 코드가 있다 치자.
#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