본문 바로가기

컴퓨터공학 공부/컴퓨터 구조론

숫자 나타내는 법, RISC-V 명령어 기계코드로 변환하기

✏Unsigned Binary Integers (부호 없는 이진수 정수값)

✔양수만 나타낼 수 있다.

✔범위: 0 ~ (2^n - 1)이다.

 

✏2의 보수 정수값

✔범위: -2^(n-1) ~ (2^(n-1) - 1)

✔음수는 1, 양수는 0으로 나타낼 수 있다.

 

✏부정

✔여집합 + 1

 

✏덧셈, 뺄셈

✔빼는 숫자의 음수를 구해서 더하면 된다.

 

✏Sign Extension (부호 확장)

✔짧은 길이의 숫자를 긴 길이의 숫자로 변환하는 것

ex) 8비트를 16비트로 변환 
+2: 0000 0010 => 0000 0000 0000 0010
-2: 1111 1110 => 1111 1111 1111 1110

첫번째 수를 보고 판단해서 확장한다.
Signed number을 무조건 0으로 확장하면 안된다.
ex) 4b => 8b
1011 => 00001011 (이러면 안됨. -5에서 11으로 값이 바뀌어버림.)

✏16진수

✔한 개의 자릿수가 0~15까지 나타낼 수 있어야 함.

 

✏RISC-V 레지스터

✔우리는 32개의 64bit 레지스터를 사용한다.

✔x0 ~ x31 레지스터는 각자 역할을 가지고 있다.

✏RISC-V 명령어 구성 형식 (모든 명령어는 32비트)

✔opcode: operation code (명령 코드)

✔rd: 목적지 레지스터 번호

✔func3: 3비트 function code (추가 opcode)

✔rs 1: 첫번째 근원지 레지스터 번호

✔rs 2: 두번째 근원지 레지스터 번

✔func7: 7비트 function code (추가 opcode) 

 

✏RISC-V R포맷

✔rd = rs1 (연산) rs2

✏RISC-V I포맷

✔rd <= rs1 ... immediate

✏RISC-V S포맷

✔rs2 => rs1 ...immediate

✔I포맷과 구분하기 위해 rd가 없고 rs1과 rs2 필드를 사용한다.

'컴퓨터공학 공부 > 컴퓨터 구조론' 카테고리의 다른 글

Register  (0) 2023.03.21
RISC-V의 명령어  (0) 2023.03.14
성능 비교와 성능 향상의 한계  (0) 2023.03.13
컴퓨터 성능  (0) 2023.03.13
컴퓨터의 종류와 구성 부품  (0) 2023.02.28