컴퓨터 구조론 Lecture 3 - 1

D0Lim·2021년 1월 7일
1

컴퓨터 구조론

목록 보기
10/13
post-thumbnail

시작하기 전

이 글은 필자가 수업시간에 들은 내용과 강의록을 토대로 정리한 글입니다.
수업 필기이다 보니, 오류가 있거나 설명이 부족한 부분이 있을 수 있습니다.
궁금하신 점이나 지적하실 점이 있다면 댓글로 달아주세요! 확인 후 내용을 추가하거나 답변해드리도록 하겠습니다 :)

정수 덧셈 / 뺄셈(Integer Addition / Subtraction)

덧셈

  • 비트로 바꾸어서 더하기 하면 된다.

뺄셈

  • 두 번째 피연산자를 부호를 바꾸어서(negate) 더하기로 연산하도록 한다.
  • 위의 과정을 통해 2의 보수법을 사용한 부호 연산이 가능해진다.

오버플로우(Overflow)

  • 결과가 값의 범위를 벗어나면 오버플로우가 발생한다.

덧셈

  • (양수 + 음수) \rightarrow 오버플로우 발생 하지 않음
  • (양수 + 양수) \rightarrow 만약 결과의 부호(Sign) 비트가 1이면 오버플로우
  • (음수 + 음수) \rightarrow 만약 결과의 부호(Sign) 비트가 0이면 오버플로우

뺄셈

  • (양수 - 양수), (음수 - 음수) \rightarrow 오버플로우 발생 하지 않음
  • (음수 - 양수) \rightarrow 만약 결과의 부호(Sign) 비트가 0이면 오버플로우
  • (양수 - 음수) \rightarrow 만약 결과의 부호(Sign) 비트가 1이면 오버플로우
연산AB오버플로우가 났을 때 결과
A + B 0\ge\ 0 0\ge\ 0< 0<\ 0
A + B< 0<\ 0< 0<\ 0 0\ge\ 0
A - B 0\ge\ 0< 0<\ 0< 0<\ 0
A - B< 0<\ 0 0\ge\ 0 0\ge\ 0

오버플로우의 처리(Dealing with Overflow)

  • 몇몇 언어들은 오버플로우를 무시한다.
    • 즉, 오버플로우가 난다고 하더라도 그대로 계산을 진행한다.
    • MIPS의 addu , addui , subu 명령을 사용한다.
    • C나 Java의 경우가 이러하다.
  • 다른 언어들은 예외가 발생하여 연산이 중지된다.
    • MIPS의 add , addi , sub 명령을 사용한다.
    • 오버플로우가 발생하면, 예외 처리기를 작동시킨다.
      • PC를 예외 프로그램 카운터(EPC) 레지스터에 저장한다.
      • 미리 정의된 예외 처리기 주소로 점프한다.
      • 처리를 마친 후, 연산을 계속하기 위해 mfc0 (보조 프로세서 레지스터로부터 move) 명령을 이용하여 EPC 값을 되돌린다.
      • Ada나 포트란의 경우가 이러하다.

0개의 댓글