데이터 전송 명령어(data transfer instruction) 앞 포스트에서 설명한 바와 같이 RISC-V의 산술 연산은 레지스터에서만 실행된다. 하지만 프로그래밍 언어에는 배열이나 구조체 같은 복잡한 자료구조가 존재하고, 이런 자료구조 하나에는 레지스터 개수보다 훨씬 많은 데이터 원소가 있을 수 있다. 이런 자료구조는 컴퓨터 내에서 어떻게 표현되고 사용될까? 소량의 데이터만을 레지스터에 저장할 수 있는 프로세서와 다르게 메모리는 수십억 개의 데이터를 저장할 수 있다. 따라서 컴퓨터는 배열이나 구조체 같은 자료구조는 메모리에 보관한다. 하지만 RISC-V의 산술 연산은 레지스터에서만 실행되므로 메모리에 있는 피연산자를 처리하기 위해서는 메모리와 레지스터 간에 데이터를 주고받는 명령어가 있어야 할 것..
산술 명령어(arithmetic instruction) RISC-V 산술 명령의 특징은 다음과 같다. 반드시 한 종류의 연산만 지시한다. 반드시 3개의 피연산자를 갖는다. 따라서 네 변수 b, c, d, e를 더해서 그 합을 a에 넣으라는 산술 연산을 RISC-V 어셈블리어로 컴퓨터에 지시하는 것은 아래와 같다. add a, b, c // a에 b와 c의 합이 저장된다. add a, a, d // a에 a와 d의 합이 저장된다. add a, a, e // a에 a와 e의 합이 저장된다. 조금 더 복잡한 예를 살펴보자. 아래는 어떤 C 프로그램의 코드이다. f = (g + h) - (i + j); C 프로그램을 RISC-V 어셈블리 언어 명령어로 바꾸는 것은 컴파일러의 일이다. C 컴파일러가 생성할 RIS..
RISC-V는 축소 명령어 집합 컴퓨터(RISC) 기반의 개방형 명령어 집합(ISA)이다. 특징으로는 load-store 아키텍처이다. 기본 명령어 집합들은 32비트의 고정된 길이를 가지고 있다. 32비트(RV32), 64비트(RV64), 128비트(RV128) 명령어 집합이 정의되어 있다. 32개의 정수 레지스터를 가지고 있다. 첫 번째 정수 레지스터(x0)는 값이 0으로 고정되어 있다. 메모리 주소를 바이트(8비트) 단위로 나타낸다.
개요 메모리를 이루고 있는 바이트들은 각각 사무실 건물의 방 번호처럼 주소를 가지고 있다. 1장과 2장에서 컴퓨터가 사용하는 언어에 대해서 알아보았으니 이번 장에서는 메모리의 바이트 주소들과 해당 바이트에 저장된 데이터가 컴퓨터의 언어로 어떻게 표현되지 알아보자. 메모리의 주소 표현 메모리의 바이트를 나타내는 주소값은 절대 변하지 않는다. 메모리의 시작점으로부터 957번째 바이트는 항상 957번째 바이트이다. 하지만 해당 바이트를 구성하고 있는 비트의 상태(내용)는 바뀔 수 있다. 컴퓨터 과학자들은 메모리의 바이트 주소를 0부터 시작하는 16진수로 표현한다. 따라서 아까 말했던 957번째 바이트의 주소는 10진수로 956을 나타내는 0x3bc로 표현할 수 있다. 아래의 표를 통해 메모리의 처음 16개의 ..
개요 저번 장에서 2진수로 컴퓨터 내부의 스위치들의 상태를 효과적으로 표현하는 방법에 대해서 알아보았다. 이번 장에서는 2진법의 수학적 속성을 알아보고 우리에게 익숙한 10진법과의 관계에 대해서 알아보자. 위치 기수법 어떤 수를 적을 때 우리는 알게 모르게 위치 기수법(positional notation)을 사용하는데, 이는 해당 수를 구성하고 있는 기호들의 값이 위치에 의해 결정된다는 뜻이다. 10진법은 기호로 0, 1, ..., 9를 사용한다. 50이라는 수에서 5라는 기호의 값이 50인 이유는 해당 기호의 값에 10을 곱하는 십의 자리(tens position)에 위치하고 있기 때문이다. 같은 논리로 500이라는 수에서 5라는 기호의 값이 500인 이유는 백의 자리(hundreds position)..
개요 컴퓨터에서 일어나는 모든 일은 두 개의 상태를 가질 수 있는 스위치들에 의해 제어된다. 스위치들의 조합은 각각 컴퓨터가 가지고 있는 상태를 표현하므로, 스위치들의 조합을 나열하면 컴퓨터에서 어떤 일이 일어났는지 설명할 수 있을 것이다. 대충 글로 표현한 예시는 "첫 번째와 두 번째 스위치는 켜져있고, 세 번째 스위치는 꺼져있고, 네 번째 스위치는 켜져있다"가 될 수 있다. 하지만 수십억 개의 스위치를 가지고 있는 현대의 컴퓨터를 이런식으로 설명하는 것은 불가능하므로 더 편리한 수 표기법을 사용해 표현하는 방법을 알아보자. 비트 표현 수를 표기하기 위해 0부터 9의 10개의 숫자를 사용하는 10진법(decimal system)은 익숙할 것이다. 하지만 스위치는 10개의 상태가 아니라 2개의 상태만을 ..