⭐️ 3.7 Procedures
DUMP
- 프로시저는 인자들의 목록과 선택적인 반환값으로 코드를 패키징한 추상적인 개념. p.265
- passing control: program counter must be set to starting address of the code for function upon entry
- passing data: 리턴을 할 때엔 레지스터를 활용
- 스택을 활용하여 프로시저에 필요한 스토리지를 관리할 수 있다. 스택과 프로그램 레지스터는 제어와 데이터를 전달하고 메모리를 할당하는 데 필요한 정보를 저장한다. p.267
- Stack Frame, 프로시저가
pushq
를 통해 스택포인터를 움직이면 리턴주소, 기존 레지스터, 지역변수, 인자를 위한 공간을 추가적으로 확보하기 위해 스택포인터를 아래로 더 내린다. p.268
- 64비트 이하의 인자는 최대 6개까지 레지스터에 보관된다고! 그것을 초과하는 인자들은 스택프레임에 올라가고! p.273
- 스택프레임은 침범당하지 않는다. 재귀함수를 예를 들면 같은 이름의 프로시저를 호출할지라도 전혀 다른 스택프레임과 전혀 다른 로컬 스토리지를 갖고 있기 때문에 동일하다고 볼 수 없다. p.281