본문 바로가기
Study/컴퓨터구조

[컴퓨터구조] subtraction

by hyeon827 2024. 9. 16.
  • $0 → 값은 항상 0
  • register 총 32개 ($0 ~ $31, 각각 32bit)

Signed Binary Subtraction

  • 6 → 0000 0000 0000 0000 0000 0000 0000 0110
  • 의 1의 보수→ 1111 1111 1111 1111 1111 1111 1111 1001
  • (-6) → 1111 1111 1111 1111 1111 1111 1111 1010

 

MIPS source file

 

  • 1 instruction은 32bit (=1 word =4B)
  • [메모리 주소] -> 16진수(8자리)로 나타냄 -> ex) 00400024 byte에 해당 데이터가 있음
  • 메모리에 저장된 내용 -> 16진수(8자리)로 나타냄
  • 왜 다음 instruction 주소는 00400025가 아니라 00400028일까 (1 insturcion = 4B)
    • 20 -> 24번째
    • 0b -> 25번째
    • 00 -> 26번째
    • 07 -> 27번째
  •  

 

  • 10진수

 

  • 2진수 (앞 0 생략)

 

  • 16진수

 

정수의 뺄셈

  • a - b = a + (-b)
  • 즉, b를 양수/음수 관계없이 -b (2의 보수)로 만들어 덧셈 수행
  • 2147483647 -> 32bit로 표현할 수 있는 가장 큰 숫자
  • Overflow 발생

  • 연산의 결과가 32-bit word로 표현될 수 없을 때

 

  • add/addi/sub 명렁어는 연산 결과 overflow가 되면 exception을 발생 (하드웨어에서)
  • exception (예외) : 프로그램의 정상적인 수행을 방해하는 계획되지 않은 사건

 

  • ok 누르면 아래와 같이 변환 
  • 우리가 원하는 대로 $t1에 값이 저장됨 (addi는 실행 X) 

 

  • exception 발생

 

  • user program이 처리 X
  • OS kernel (Window, Mac OS, Linux)이 처리
  • OS에서 exception을 처리하는 function -> Exception Handler
  • User Text Segment -> 내가 적은 code 
  • Kernel Text Segment -> operating system code

 

  • u 의미 : overflow undetected
  • overflow signal이 생겼을 때 user program에서 처리 

 

  • exception 처리 후 6번 라인으로 다시 돌아옴
  • $10은 exception이 발생했기 때문에 값이 바뀌지 않음

 

  • signed or unsigned 
  • 어떻게 처리할지는 user program에서 정함

 

  • addiu 명렁의 상수 operand는 음수일 수 있음
  • unsigned라고 해서 음수 사용 못하는 거 아님
  • u 의미-> overflow 발생해도 exception 발생시키지 X

'Study > 컴퓨터구조' 카테고리의 다른 글

[컴퓨터구조] Rformat  (0) 2024.09.17
[컴퓨터구조] logical instructions  (1) 2024.09.16
[컴퓨터구조] multi & div  (0) 2024.09.16