Chaz 2011. 4. 7. 00:17
 


- MIPS instruction formats

명령어들은 R, I, J의 세 종류로 나뉜다. 모든 명령어는 6비트의 opcode로 시작한다. opcode뒤에 R타입 명령어는 3개의 레지스터, shift amount, function 필드를 명시한다. I타입 명령어는 2개의 레지스터, 16비트의 직접적인 값을 명시한다. J타입 명령어는 26비트의 jump target이 온다.

Type-31-                                 format (bits)                                 -0-
R opcode (6) rs (5) rt (5) rd (5) shamt (5) funct (6)
I opcode (6) rs (5) rt (5) immediate (16)
J opcode (6) address (26)


- MIPS assembly language

어셈블리화 되기 전에 여러 개의 실제 명령어로 translate 되어야 하는 pseudoinstruction에 비해 하드웨어에서 직접 실행되는 assembly language instrunction이 있다.

다음에서 레지스터 문자 d, t, s는 (레지스터) 숫자나 레지스터 이름을 대신하는 기호이다.
C는 직접적인 상수를 의미한다.
다음의 모든 명령어는 원래의 명령어이다. 
opcode와 function code는 16진수이다.

(2014/04/25: 위에 내용은 뭐지 뭔가 번역하다가 때려치고 만 건가. 아 위키피디아 내용이네.)


- 레지스터

레지스터 번호 기억하기 쉬운 이름 일반적 용도
$0 zero 항상 0
$1 $at 어셈블러 템포러리(지정되어 있음)
$2, $3 $v0, $v1 서브루틴에서 리턴되는 값
$4-$7 $a0-$a3 서브루틴에 입력되는 값
$8-$15 $t0-$t7 임시 - 함수호출중에 변할 수 있다
$16-$23 $s0-$s7 저장되는 레지스터 - 함수호출중에도 불변
$24,$25 $t8,$t9 임시
$26,$27 $k0,$k1 커널(OS가 사용함)
$28 $gp 전역포인터
$29 $sp 스택포인터
$30 $fp 프레임포인터
$31 $ra 리턴주소(몇몇 명령에서 자동으로 사용됨)