티스토리 뷰

반응형

역시나 시작은

Register

$zero $0 항상 0이 저장되어 있는 Register (수정할 수 없다)
$at $1

명령어를 수행하는 동안 임시값이 저장되는 Register

( Assembler Temporary Register )

$v0, $v1 $2, $3 반환값 Register ($v0은 syscall 호출시 사용된다)
$a0~$a3 $4~$7 인자 Register (Arguments)
$t0~$t7 $8~$15 임시 Register (서브루틴 호출시 저장하지 않는다)
$s0~$s7 $16~$23

저장되는 임시 Register (서브루틴 호출시 저장된다)

함수 호출시 함수 시작부분에서 해당 Register를 Stack에 저장한다.

$t8, $t9 $24, $25 추가적인 임시 Register
$k0, $k1 $26, $27 커널 Register
$gp $28 전역 포인터 Register (용도는....?)
$sp $29 스택 포인터 Register
$fp $30 프레임 포인터 Register
$ra $31 리턴 주소 Register
$f0~$f31 $32~$63 추가적인 Register이고 이중에 실수 저장을 위한 Register가 존재

 

 

Instruction

산술연산자

 - add / addu $rd, $rs, $rt

 - sub / subu $rd, $rs, $rt

 - mul / mulu $rd, $rs, $rt

 - div / divu $rd, $rs, $rt

   ( div의 결과는 lo, hi에 몫과 나머지가 저장된다. 이 값을 가져오는 명령어는 mflo, mfhi 이다. )

 

 - and $rd, $rs, $rt

 - or $rd, $rs, $rt

 - nor $rd, $rs, $rt

 - or $rd, $rs, $rt

 

 - addi $rd, $rs, $i

   ( 상수를 더할경우 사용한다. 단, subi는 존재하지 않는다. addi에 상수를 음수로 사용한다. )

 - andi, ori, xori ...

 

 

데이터 전송 명령어

 - lw (Load Word) : lw $s2, 24($s0)

   ( 진행방향이 오른쪽에서 왼쪽이라는 것을 반드시 기억하자 )

   operand는 ( dst, offset(base) ) 가 된다.

 

 - sw (Store Word) : sw $s2, 24($s0)

  ( 진행방향이 왼쪽에서 오른쪽이라는 것을 반드시 기억하자 )

  operand는 ( src, offset(base) ) 가 된다.

 

 - lb, sb 등의 Data Size에 따른 명령어들이 존재하고, word는 기본적으로 4Byte이다.

 

 - li (Load Immediate) : li $v0, 4

 - la (Load Address) : la $v0, [Address]

 

 - move $t0, $t1

   ( la, li 와 차이점은 move는 Register - Register 이라는 점이다 )

 - movn $t0, $zero, $t1

   ( If $t1 != $zero, then $t0에 $t1을 저장 )

 

 

 

점프명령어

 < Jump 명령어 >

  - jal [Label] : 다음 명령어 주소를 $ra에 저장하고 [Label]로 점프

   ( 서브루틴 진입시 사용된다 )

  - jr $ra : 단순하게 Register에 저장된 주소로 점프

   ( 서브루틴의 마지막에 주로 사용된다 )

  - j [Label] : 단순하게 [Label]로 점프

 

 < Branch 명령어 >

  - bge / bgeu $s, $t, [Label]

  - bgez $s, [Label]

    ( 위와 같은 형태로 bgt, ble, blt 도 존재한다. )

 

  - b [Label]

  - beq $s, $t, [Label]

  - beqz $s, [Label]

  - bne $s, $t, [Label]

  - bnez $s, [Label]

 

 

Set 명령어

 - sge / sgeu $d, $s, $t 

     : $s >= $t 이면 $d를 1로 셋팅한다. 아니면 0으로 셋팅한다.

  ( 위와 같은 형태로 sgt, sle, slt 도 존재한다. )

 

 - slti / sltiu $d, $s, imm

 - seq $d, $s, $t

 - sne $d, $s, $t

 

 

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함