1. Introduction
1.1. Arithmetic for Computers
- 정수에 대한 산술 연산
- 실수에 대한 산술 연산
2. Addition and Subtraction
2.1. Integer Addition
- 2진수 덧셈
- 만약 carry가 범위를 넘어가서 영향을 미치게 되면 overflow 발생
- overflow : 수를 표현할 수 있는 범위를 넘어간 현상
- 양수 + 음수 ⇒ overflow x
- 양수 + 양수 = 음수 or 음수 + 음수 = 양수 ⇒ overflow 발생
2.2. Integer Subtraction
- 음수로 변환 후 더하기 연산
- Overflow
- 양수 - 양수 ⇒ overflow x
- 음수 - 음수 ⇒ overflow x
- 양수 - 음수 ⇒ overflow 발생할 수 있음
- 음수 - 양수 ⇒ overflow 발생할 수 있음
2.3. Dealing with Overflow
- C, C++과 같은 몇몇의 언어들은 overflow를 무시함
- addu, addui, subs instructions을 사용
- 다른 언어들은 exception을 요구함
- add, addi, sub instructions을 사용
- overflow 발생 시, exception handler로 넘어감
- EPC(Exception Program Counter)
- save program counter 저장
- 일반적인 instruction으로는 접근 불가능
mfc0(move from coprocessor register)
: 수정 조치(corrective action)후에 return 하기 위해 epc의 값을 찾아낼 수 있음
- mfc0, $k0, $13($13에 있는 값을 $K0에 넣겠다는 의미)
- j $k0
- $13 : EPC
- $k0 : 운영체제 임시 레지스터, interrupt에서 복귀할때만 사용
2.4. Arithmetic for Multimedia
- Graphics와 media는 8-bit과 16-bit 데이터의 벡터 기반 작업을 수행함
- 64-bit adder를 사용한다면, carry chain을 끊어줌
- SIMD(single-instruction, multiple-data)
- 병렬 컴퓨팅의 한 종류로, 하나의 명령어로 여러 개의 값을 동시에 계산하는 방식
- Saturating operations
- 오버플로우가 발생한다면, 결과는 표현 가능한 범위에서 가장 큰 값이 됨
3. Multiplication
3.1. Multiplication