목록전체 글 (37)
보근은 참고 있다
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/TJsAt/btqKSgykxWR/whWETXdwuwRTKNmYplKzhk/img.png)
컴퓨터가 수를 나타내는 법 컴퓨터는 일련의 높고 낮은 전기 신호의 형태로 숫자를 저장한다. 따라서 이진수를 사용한다고 볼 수 있다. 컴퓨터 내에서 모든 정보는 이진 자리 수(binary digit), 즉 비트(bit)로 구성되므로 비트가 계산의 기본 단위가 된다. 워드 내의 각 비트에 오른쪽에서 왼쪽으로 0, 1, 2, 3, ... 과 같이 번호를 붙인다. 워드는 위 그림처럼 수평뿐만 아니라 수직으로도 그릴 수 있기 때문에, 가장 오른쪽 혹은 가장 왼쪽 비트라고 말하면 표현이 애매할 수가 있다. 대신 LSB(Least Significant Bit)라는 용어로 가장 오른쪽 비트 0을 나타내고, MSB(Most Significant Bit)라는 용어로 가장 왼쪽 비트 31을 나타낸다. 2의 보수 MIPS 워..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cUmhh3/btqKXiVV931/NGWqeosFifJzdC1XxXUUK0/img.png)
상위 수준 언어 프로그램과는 달리 산술 명령어의 피연산자에는 제약이 있다. 레지스터(register)라고 하는 하드웨어로 직접 구현된 특수 위치 몇 곳에 있는 것만을 사용할 수 있다. MIPS 구조에서 레지스터의 크기는 32비트이다. MIPS에서는 32비트가 한 덩어리로 처리되는 일이 매우 빈번하므로 이것을 워드(word)라고 부른다. 프로그래밍 언어에서 사용하는 변수와 레지스터의 큰 차이점 하나는 레지스터는 개수가 한정되어 있다는 점이다. 현대 컴퓨터에는 MIPS에서처럼 보통 32개의 레지스터가 있다. 산술 명령어의 각 피연산자는 32개의 32비트 레지스터 중 하나이어야 한다는 제약이 추가된다. 설계 원칙 2 : 작은 것이 더 빠르다. 레지스터 개수가 많아지면 전기 신호가 더 멀리까지 전달되어야 하므로..
기본적으로 모든 컴퓨터는 산술연산을 할 수 있어야 한다. MIPS 산술 명령어는 반드시 한 종류의 연산만 지시하며 항상 변수 세 개를 갖는 형식을 지킨다. ex) add $t0, $t1, $t2 // $t0에 $t1 + $t2의 값을 넣는다. 기억할 장소 하나와 더해질 값의 장소 두 개, 모두 세 개인 것이 자연스럽다. 이렇게 모든 명령어가 피연산자를 반드시 세 개씩 가지도록 제한하는 것은 하드웨어를 단순하게 하자는 원칙과 부합한다. 설계 원칙 1 : 간단하게 하기 위해서는 규칙적인 것이 좋다. ex) 상위 프로그램의 연산을 하드웨어에서의 연산으로 치환. a = b + c; d = a - e; => add a, b, c sub d, a, e