Home 컴퓨터개론 16
Post
Cancel

컴퓨터개론 16

프로시저

  1. 프로시저란?
    • 프로시저란 제공되는 인수에 따라서 특정 작업을 수행하는 서브루틴
    • 프로시저의 인수(parameter)는 프로시저에 값을 보내고 결과를 받아옴
    • 프로시저나 함수는 재사용 가능하도록 프로그램을 구조화
  2. 프로시저 관련 레지스터
    • $a0~$a3 : 전달할 인수를 가지고 있는 인수 레지스터
    • $v0~$v1 : 반화뇌는 값을 갖게 되는 값 레지스터
    • $ra : 복귀주소(return address)를 가지고 있는 레지스터
  3. 프로시저를 위한 명령어
    • jal(jump-and-link instruction)
    • 복귀주소를 $ra에 저장하고 프로시저가 할당된 주소로 점프하는 명령어
    • $ra의 주소로 복귀할 때 jr(jump register)명령어 를 사용
    • eg) jal procedure address, jr $ra
  4. 프로시저의 실행단계
    • 프로시저가 접근 할 수 있는곳에서 인수를 넣는다.
    • 프로시저로 제어를 넘긴다.
    • 프로시저가 필요로하는 메모리 자원을 획득한다.
    • 필요한 작업을 수행한다.
    • 호출한 프로그램이 접근할 수 있는 레지스터에 결과값을 넘긴다.
    • 호출한 프로그램으로 제어권을 반환한다.
    • 이미지
  5. 스택 (정적변수 - 컴파일)
    • 정적변수에 이용 (컴파일시 결정)
    • 메모리를 사용
    • 레지스터가 부족한 경우에 사용
    • 후입선출(lifo)로 이루어진 선형 자로구조
    • push, pop 으로 데이터를 넣고 꺼낼 수 있다.
    • 스택포인터(sp)의 값은 스택에서 데이터가 들어가고 나올때마다 변경된다.
    • 스택은 높은 주소에서 낮은 주소로 생성되기 때문에 스택을 할당 할 때에는 sp에서 사용할 만큼의 값을 감소 시켜야한다.
  6. 스택 프레임
    • 각 프로시저는 독립된 스택프레임을 가지고 있음
    • 프로시저이 저장된 레지스터와 지역변수를 가지고 있는 스택영역
    • 프레임포인터(fp)가 프로시저의 첫 번째 워드를 가리키도록 되어있음.
    • fp에는 인수, 지역변수, 복귀주소 등이 저장됨
    • fp는 베이스레지스터의 역할을 하고 sp는 값이 변경되며 스택의 최하단을 가리킴
    • 재뒤호툴등에서 ra값이 변경될 여지가 있으므로 복귀주소 저장 수단으로 스택프레임을 사용함.
  7. 연습문제
    • 이미지
  8. 메모리
    • 세그먼트
    • 메모리는 각각 다른 값을 저장하는 블록으로 나누어져 있음
    • stack : 지역변수 선언, 정적할당, 프로그램 종료시 자동소멸 (8mb)
    • heap : 동적으로 할당된 메모리영역, 개발자가 해제를 해줘야함. (링크드리스트)
    • data : 전역변수
    • text : 기계어 저장
    • segmentation Fault : 참조할 수 없는 메모리역역을 참조했을 때 발생 에러
    • 이미지
This post is licensed under CC BY 4.0 by the author.

컴퓨터개론 15

컴퓨터개론 17

Comments powered by Disqus.

Trending Tags