CPU 레지스터 정리

caller save register

  • %eax (extended accumulator register)
  • %ecx (extended count register)
  • %edx (extended data register)

callee save register

  • %ebx ( extended base register )
  • %edi ( extended destination index )
  • %esi ( extended source index )

ESP (Extended Stack Pointer)

  • 현재 스택의 가장 위에 들어있는 데이터를 가리키고 있는 포인터
  • Intel CPU에서는 스택이 거꾸로(리틀엔디언) 자라므로 데이터가 하나 PUSH 될때마다 ESP 값은 감소
  • ESP는 다음 번 DATA를 Push 할 위치가 아니라 다음에 POP 했을 때 뽑아낼 데이터의 위치를 가리 킴

EBP (Extended Base Pointer)

  • 현재 스택의 가장 바닥을 가리키는 포인터
  • 새로운 함수가 호출될 때마다 EBP 레지스터 값이 지금까지 사용했던 스택 꼭대기의 위에 위치하게 되고 새로운 Stack이 시작
  • 따라서 EBP는 새로운 함수가 호출이거나 현재 실행중인 함수가 종료되어 리턴될 때마다 값이 달라짐

태그:

업데이트: