컴퓨터아키텍처

Computer Architecture

2016-03-23


Instruction (2장)
비교 연산, branch/jump 관련 연산
 

과제 제출 안내

  • Google Drive 공유 폴더를 통해 (종이 X, 메일 X)
  • [새로 만들기] 버튼을 눌러
    CA16<이름><학번> 폴더를 만들고 (예: CA16김연아123456)
    만들어진 폴더를 우클릭하여 나오는 드롭메뉴에서
    폴더 공유설정으로 kyagrd@gmail.com 에게 공유 (편집권한)
  • Google 메일 계정만 있으면 Google Drive 서비스 이용 가능 
  • Google 메일 계정은 무료로 만들 수 있으며
    참고로 안드로이드 스마트폰 사용자는 누구나 이미 보유
  • 과제1 파일명 hw1.s 로 공유폴더 안에 저장해서 제출

MIPS 어셈블리 실습

  • SPIM 시뮬레이터 사용
  • MIPS 어셈블리 syntax coloring 지원하는텍스트 에디터
    • Sublime Text
    • Notepad++
    • Vim
    • Emacs

MIPS Assembly vs. MIPS Instruction

  • 모든 MIPS Assembly 명령이 MIPS Instruction과 일대일 대응 아님
  • MIPS 어셈블리 주소 레이블, 메모리 초기화 간편한 문법 제공 매크로
  • MIPS 어셈블리에는 MIPS Instruction에 없는 pseudo-instruction도 있다
    • 예: move, li, la, not, neg, blt, ble, bgt, bge, sge, sgt 등
    • 교과서 p119 및 부록 A.10 참고
    • 어셈블러가 하나 이상의 실제 instruction으로 번역한다.
      SIMP Simulator 에서 프로그램 명령 한 줄이 하나 이상의 instruction으로 Text영역에 로드되는 것들이 대개 이에 속함
    • 이것도 일종의 매크로라 볼 수 있음.
    • 원래 MIPS Instruction보다 수동으로 어셈블리 코딩할 때 오히려
      더 많이 쓰이는 것들도 있다 (예: li가 ori로 번역됨)  

jump 연산

  • 무조건 지정된 주소로 $pc 를 옮김
    (addressing mode 에 대해서는 다음 수업시간에)
  • j label    # label 위치로 점프
  • jal label  # 4 + $pc를 $ra에 저장 후 label로 점프
               # jal은 주로 함후 호출에 사용
    
  • jr $ra     # 레지스터에 저장된 주소 위치로 점프
               # jr은 주로 함수 마치고 리턴에 사용
    

branch 연산

  • 특정 조건을 만족할 경우 지정된 offset만큼 $pc를 옮김
    (pc relative addressing mode - 이것은 다음 수업시간에 설명)
  • bne $t0, $t1, label  # t0와 t1의 값이 같지 않으면
  • beq $t0, $t1, label  # t0와 t1의 값이 같으면
    
  • MIPS 어셈블리에서 bgt, bge, blt, ble 등 pseudo-instruction들
  • bgtz $t0, label # t0 > 0 일 때 label로
                    # 비슷한 bgez, bltz, blez, beqz 
    
  • MIPS 어셈블러가 bgt, bge, blt, ble 등 pseudo-instruction을
    비교 연산 한 개와 bne 또는 beq 하나
    이렇게 두 개의 실제 연산으로 번역

비교 연산

  • slt $t0,$t1,$t2  # t1<t2이면 t0=1 아니면 t0=0
                     # 비슷하게 sgt
    
  • 비교 pseudo-instrution들 seq, sge, sle, sne
  • 지금까지 소개한 모든 MIPS Assembly는
    부록 A.10에 더 자세한 내용이 나오니 필요할 경우 참고

과제 설명 및 반복문 예제

  • 수업시간에 MIPS Assembly 예제 코드를 직접 실행해 보며 설명함

컴퓨터아키텍처

By 안기영 (Ahn, Ki Yung)

컴퓨터아키텍처

2016-03-23

  • 2,007