함수(프로시저)는 프로그램을 이해하기 쉽고 코드를 재사용할 수 있도록 만들어준다. 함수 호출 과정에서는 호출자와 호출 대상간의 관계가 형성된다. 호출자는 함수를 호출하는 프로그램, 호출 대상은 함수를 실행하는 프로시저이다. 호출 대상이 다른 함수를 호출하면 호출 대상은 호출자가 된다. 1) 호출자는 매개변수를 호출 대상이 접근할 수 있는 장소에 둔다. 2) 제어가 호출 대상으로 전달된다. 3) 호출 대상은 프로시저에게 필요한 저장 공간 자원을 할당한다. 4) 호출 대상은 필요한 작업을 수행한다. 5) 호출 대상은 결과 값을 호출자가 접근할 수 있는 장소에 놓는다. 6) 제어가 호출자로 반환된다. 1~3번은 함수 호출, 4번은 함수 실행, 5~6번은 함수 반환을 뜻한다. 함수 관련 레지스터는 다음과 같다...
어셈블리
MIPS에서 shift 연산은 sll, srl 연산으로 할 수 있다. sll(shift left logical)은 왼쪽 쉬프트 연산, srl(shift right logical)은 오른쪽 쉬프트 연산을 수행한다. rs에 0이 들어가고 첫 번째 인자는 rt, 두 번째 인자는 rd에 들어간다. LEFT SHIFT $t0 = $s0 > 1 srl $t0, $s0, 1 AND $t0 = $t1 & $t2 and $t0, $t1, $t2 AND immediate $t0 = $t1 & 8 andi $t0, $t1, 8 OR $t0 = $t1 | $t2 or $t0, $t1, $t2 OR immediate $t0 = $t1 | 8 ori $t0, $t1, 8 NOR $t0 = ~($t1 | $t2) nor $t0, ..