procedure call

David8·2022년 10월 1일
0

컴퓨터구조

목록 보기
13/18

procedure call

  1. jal, jr
  2. 함수 내 레지스터 부족한 경우
    1. 해결책: stack 사용(메인 메모리)
      1. $t0 ~ $t9: 보존x
      2. $s0 ~ $s7: 보존o
        1. t레지스터의 경우는 임시로 사용한다고 생각하여 굳이 보존하지 않고, s레지스터는 계속 사용한다고 생각하여 값을 저장 후 복원함 --> t레지스터의 값을 계속 사용할 거면 따로 저장 해주어야 함
  3. nested procedure call(중첩 함수-함수에서 함수 호출)
    1. caller
      1. $t0 ~ $t9 함수 호출 이후 사용하면 --> 따로 저장 해놓아야 함
    2. callee
      1. 모든 $s0 ~ $s7 저장 --> 복원

procedure frame

  1. $fp(frame pointer)
    1. 스택의 시작 위치 point(함수내에서)
    2. 함수 진행 동안 변하지 않음 --> 다른 함수 호출 시 재설정
  2. $sp(stack pointer)
    1. 스택에 따라 위치 변경(함수내에서)

스택

  1. stack: 지역 변수와 매개변수 저장

    1. 매개변수(parameter, 인자-아들 자로 연상): 함수에서 받는 값
    2. 인수(argument): 함수에서 보내는 값

  2. heap: 사용자가 직접 관리할 수 있는 영역

    1. malloc(): 메모리 할당
    2. free(): 해제
  3. Static Data Segment: 전역 변수와 정적 변수 저장

  4. text segment: 실행할 코드 저장

0개의 댓글