- $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 |