본문 바로가기

Programming/Basis

(21)
컴퓨터가 2진수를 사용하는 이유 컴퓨터는 IC 칩으로 구성되어 있다. 컴퓨터의 내부는 *IC로 구성되어 있다. IC는 다음과 같이 검은 몸체의 양쪽에 여러 개의 다리가 붙어 있는 형태다. 위 IC 칩의 경우 양쪽의 8개의 다리가 달려있는 것이다. 이 다리를 핀(pin)이라고 하며, 각 핀은 두 가지 상태를 갖는다. 이 두 가지 상태는 전압이 있거나(보통 +5V), 전압이 없거나(0V)로 표현된다. 이런 이유로 컴퓨터는 전압이 있을 때는 1, 전압이 없을 때는 0, 즉 0과 1로만 구성되는 2진수로 데이터를 표현하게 된 것이다. 물론 컴퓨터 때문에 2진수가 고안된 것이 아니라 IC의 특성이 2진수와 잘 맞기 때문에 2진수를 쓰는 것이다. 이 때 최소 단위, 그러니까 0 또는 1을 비트(bit)라고 한다. 비트는 원래 파편이라는 뜻으로, ..
CPU가 수행하는 작업 프로그램이 아무리 복잡해도 CPU는 실제로 다음의 4가지 작업만을 수행한다.니모닉은 생략한다. 명령어 기능 데이터 전송 명령어 레지스터-메모리 / 메모리-메모리 / 레지스터-주변 기기 간의 데이터 전송 연산 명령어 어큐뮬레이터를 이용해 산술 및 논리 연산, 크기 비교, shift 연산 점프 명령어 조건 분기, 반복, 무조건 점프 호출 / 리턴 명령어 함수 호출 및 함수 호출부로 복귀
조건 분기와 함수 호출 1. 조건 분기 앞에서 프로그램 카운터에 다음에 실행할 명령어의 주소가 저장된다고 했다. 다시 말해, 명령어를 실행할 때마다 PC의 값이 바뀌는 것이다. 이를 간단히 나타내면 다음과 같다. 0100번지가 프로그램 실행의 시작 위치다. OS는 프로그램을 하드 디스크에서 메모리로 복사한 후 PC에 0100을 넣는다. 이 과정을 거쳐 프로그램이 실행되는 것이다. 그리고 CPU가 명령어 하나를 실행할 때마다 PC에 저장된 값은 명령어의 크기(여기서는 1)만큼 늘어난다. 조건 분기란 조건에 따라 특정 위치로 점프하는 것, 다시 말해 특정 주소에 있는 명령어를 실행하는 것이다. 이는 PC에 특정 주소 값을 넣는 것으로 구현된다. 0102에서 조건 만족 여부(어큐뮬레이터의 값이 0보다 큰지)는 플래그 레지스터의 값으..
레지스터 1. 레지스터(register) 앞서 언급했던 CPU를 구성하는 네 가지 요소(CU, ALU, 레지스터, 클록)에서 프로그래머는 레지스터에 대해 반드시 알고 있어야 한다.프로그램은 레지스터를 이용해 데이터를 처리하기 때문이다. 다음은 *어셈블리어로 작성된 프로그램의 일부다. *어셈블리어(assmebly language): 전기 신호인 기계어에 기능을 의미하는 **니모닉을 대응시킨 것. 기계어와 어셈블리어는 기본적으로 1 대 1 대응이다. 참고로 어셈블리어를 기계어로 변환하는 작업을 어셈블(assemble), 그 반대의 작업을 디스어셈블(disassemble)이라 한다. **니모닉(mnemonic): 인간이 기억하기 쉬운 형태로 이름을 나타내는 기호. add는 더한다는 의미를 나타낸 니모닉이라 할 수 있다..
프로그램의 작동 원리와 CPU 1. 프로그램의 작동 원리 1 2 3 int a; a = 1 + 2; printf("%d\n", a); cs ① 프로그래머가 C언어 등의 고급 언어로 소스 코드를 작성한다. 1 2 3 4 0100101000010111 0011010010100010 0010100100001100 ... cs ② 그 소스 코드를 컴파일해 기계어인 실행 파일(.exe)로 변환한다. ③ 프로그램이 실행될 때 실행 파일의 복사본이 메모리(보통 주기억장치)에 올려진다. ④ CPU가 메모리 상에 있는 exe 파일을 해석하고 실행한다. 2. CPU의 구조 CPU와 메모리는 실제로는 IC(Integrated Circuit) 로 불리는 전자 부품이다. IC는 많은 수의 *트랜지스터로 구성된 전자 회로로, 마이크로 칩이라고도 불린다. *트..