본문 바로가기

stack

Stack Stack 스택은 메모리에 값이 쌓이는 공간을 말합니다. 메모리에 어떻게 쌓이는 지 알아보도록 하죠. 먼저 스택을 알아보기 전에 Endian에 대해서 알아보도록 하겠습니다.Endian: http://kblab.tistory.com/58 자, 이제 스택구조에 대해서 알아보도록 하겠습니다. 스택은 LIFO 구조를 갖습니다. LIFO는 Last in First Out 이라는 말인데요. 나중에 들어온 것이 처음으로 나가는걸 뜻합니다. push 명령어를 통해서 스택에 쌓이게 되며 pop 명령어를 통해서 제거됩니다. 간단히 ASM코드를 작성하여 스택에 대해 좀 더 알아보겠습니다. 각 레지스터에 해당 값을 저장하고 스택에 쌓고 빼는 소스코드 입니다. 이 소스코드를 컴파일하여 실행 파일로 만들고 GDB를 이용하여 분석.. 더보기
Stack, Calling Conventions 스택은 프로그래밍을 한다면 누구나 들었을 말입니다. 스택은 LIFO (Last In First Out)입니다. 즉, 나중에 들어온 값이 먼저 나간다라는 말이죠. 스택에 넣을때는 PUSH라고 하며, 빼낼때는 POP이라고 합니다. 그리고 스택은 항상 "높은주소에서 낮은주소로 자랍니다." 즉, "거꾸로 자란다."라는 말이죠.이 이유는 다른 영역에 침범하지 않기 위해서 그렇습니다. 먼저 간단히 해당 영역이 어떤 역할을 하는지 알아보도록 하겠습니다. Text 영역 : 컴파일 된 프로그램 소스가 기계어 형태로 있는 영역입니다.Data 영역: 프로그램에서 초기화 된 데이터들이 위치합니다.BSS 영역: 초기화되지 않은 변수들이 위치해있고, 항상 0으로 초기화 됩니다.Stack 영역: 지역변수가 위치합니다.Heap 영역.. 더보기