Post

[Lecture - OS] 03. Runtime Stack

[Lecture - OS] Runtime stack

우리가 작성한 코드를 실제 실행할 때 컴퓨터는 stack을 이용해 함수의 흐름을 제어한다.

C Program Naming

  • Function
  • Variable
    • Global Variable (static)
    • Local Variable (dynamic)
  • Heap
    • Dynamic memory object

Compile

  • 위에서 언급한 naming은 compile 할 때 address로 바뀐다.
  • Compiler는 모든 address value(Logical address)를 알고 있다.
    • Global variable은 space address에 logical address로 할당된다.
    • 다만, local variable은 주소를 할당 받지 않아 모른다.
    • 이것을 stack에 register 저장해 활용한다!

Assembly Code

sample_assembly_code

  • 위 코드는 assembly code의 예시다.
  • 위에서 아래로 내려가며 순서대로 실행한다.
  • %는 register를 나타낸다.
  • %ebp는 base pointer로, 함수의 시작점을 나타낸다.
  • %esp는 stack pointer로, stack의 주소를 나타낸다.
    • 코드가 실행됨에 따라 변할 수 있다.
    • Address는 stack의 아래로 갈수록 높아진다.
  • %eax는 주로 함수의 return value로 사용된다.
This post is licensed under CC BY 4.0 by the author.