BackEnd25 1.2.3 어셈블리어 구현 RISC-V는 명령어의 길이가 32bit이다 또한 32bit 미만으로 쓸 경우엔 나머지 bit는 부호의 확장으로 채워 준다. 명령어의 각 부분을 필드라 부른다. RISC-V는 아래처럼 총 6개의 필드로 나뉜다. 이 방식을 R타입이라고한다 그런데 피연산자는 5비트라 최대 31까지만 표현이 가능한데 실제론 32이상의 값을 입력 받는 경우가 많아서 비트 수를 늘려야한다. 그런데 모든 명령어의 최대 길이를 동일 하게, 명령어 형식을 동일하게 라는 규칙도 지켜야되서 만들어진 또 다른 타입도 있다. ld x9, 64(x22) 같이 피연산자가 하나인 경우엔 I타입이라고 부르는 아래와 같이 쓴다 명령어 sd(store destination)를 쓸 땐 아래와 같이 S타입을 쓴다 여기선 12비트 수치값이 하위 5비트와 상.. 2022. 1. 7. 1.2.2 숫자 구현 이해를 위해, 이진수 문장만 저장 가능한 레지스터가 십진수 숫자인 11을 저장하는 것을 예시로 설명하겠다 레지스터는 64개의 트랜지스터로 2의 64제곱 경우의 수만큼 이진수 문장을 만들 수 있다 트랜지스터의 표기법은 배치된 순서대로 63, 62, 61 ... 0 이렇게 번호를 붙이고 나열한다. 그리고 모든 트랜지스터에 0을 넣는다. 이제 11을 중복된 지수가 없는 2의 제곱들의 합으로 표현한다. 그 결과 8 + 2 + 1 = 2^3 + 2^1 + 2^0 이제 각 항의 지수와 같은 숫자를 가진 표기 번호의 트랜지스터의 값을 1로 바꾼다 3210 (트랜지스터 표기번호) 그 결과 1011 (트랜지스터 내부 값)이 된다 이때의 모든 트랜지스터를 표현하자면 아래와 같다 이런 방식으로 0과 2^63 사이의 모든 수.. 2022. 1. 6. 전반적인 코드 작성 시에 써야할 것 1. 검색하기 쉬운 이름을 써라 예를들어 for (int j=0; j 2022. 1. 5. 전반적인 코드에서 배제할 것 1. 코드의 간결성은 유지하되 함축성을 배제하라 함축성은 읽고 이해할때 읽는 사람에게 어떤 지식 가지고 있다고 가정한다. 이것은 시간이 지남에 따라 인간의 기억력에 큰 부담을 주고, 처음부터 다시 읽어야 하는 상황을 만든다 처음 보는 사람조차 이해할 수 있게 대명사를 배제하고, 코드상의 역할과 동일한 이름을 쓰고, 다른 변수간의 관계가 바로 보이는 이름을 써라 2. 오해의 가능성을 피하라 예를 들어 hp는 hypotenuse(빗변)의 휼륭한 약어처럼 보일지라도 회사명 hp와 충분히 헷갈릴 가능성이 있다 특히 대문자 O와 소문자 l은 숫자 0과 대문자 I와의 혼동을 일으킨다 또한 유사한 개념은 유사한 표기법으로 써서 이해 시의 정보로 쓰일 수도 있는데, 전혀 다른 개념을 유사하게 써서 오해를 일으키는 것도.. 2022. 1. 4. 1.2.1 어셈블리어 문법과 종류 RISC-V 어셈블리어 어셈블리어인 RISC-V (2010~)를 먼저 쉬운 형태로 배울 것이다 (사실 명령어 집합들은 모두 다 컴퓨터의 같은 원리를 쓰고 제공되는 기능이 몇개 안되고, 최소 비용으로 최대 성능을 내야해서 비슷하게 생겼다) add a, b, c b와 c를 더하고 a에 넣다 a, b, c, d를 더하는 예 add a, b, c add a, a, e add a, a, d 특징 1. 한 줄에 명령어 하나만을 쓸 수 있다 (컴퓨터는 한번에 한가지 명령만 처리하도록 설계 되었으므로) 2. 명령어의 피연산자는 보통 명령어 하나당 2~3개이고 위치가 우측이다 (간단함을 위해 규칙성을 채택했다) (그래서 빼기는 sub a, b, c 이다) C언어의 어셈블리어로의 번역 예시 f = (g + h) - (i .. 2022. 1. 2. 이전 1 2 3 다음