반응형
스택은 임시 데이터를 보관하는 메모리이다. 스택은 한 쪽에서만 자료를 놓고 뺄 수 있는 LIFO (Last in First Out) 구조를 가지고 있다. 간단하게 가장 늦게 들어간 데이터가 가장 빨리 나오는 방식이다.
스택이 메모리 공간을 무한히 사용할 수는 없으니 보통 운영체제가 프로그램에게 스택을 위한 공간을 지정해준다.
이 스택에서 가장 위에 있는 메모리 주소를 ESP 레지스터가 가지고 있다. 그리고 EBP 레지스터는 현재 스택에서 가장 아래에 있는 메모리 주소를 가지고 있다.
POP 명령어는 스택에서 맨 위에 있는 데이터를 인자에 넣고 ESP 레지스터 주소 값을 아래로 내린다. 반대로 PUSH 명령어는 인자를 스택에 넣고 ESP 레지스터 주소 값을 위로 올린다.
1 2 3 | pop eax // eax에 스택에서 가장 위에 있는 데이터를 넣고 ESP 레지스터 주소 값을 아래로 한칸 내린다. push eax // 스택에 eax를 넣고 ESP 레지스터 주소 값을 위로 한칸 올린다. | cs |
반응형
'옛날 글들 > Assembly' 카테고리의 다른 글
[Assembly] 6. inc, dec, add, sub, adc, sbb의 사용 (0) | 2018.12.03 |
---|---|
[Assembly] 5. 조건분기 JUMP문 정리 (0) | 2018.12.02 |
[Assembly] 4. CMP의 사용과 상태 플래그 (0) | 2018.11.29 |
[Assembly] 3. JMP의 사용 (0) | 2018.11.29 |
[Assembly] 2. 메모리의 사용과 포인터 사용 (0) | 2018.10.30 |