상세 컨텐츠

본문 제목

혼공컴운 1주차 컴퓨터 구조 시작하기. (cpu, opcode)

혼공단/컴구운체

by nownow 2024. 12. 31. 08:10

본문

컴퓨터의 주요 부품은 CPU, 메모리, 입출력장치, 보조기억장치 넷으로 분류할 수 있다.

 

CPU 내부에는

ALU -> 연산을 위한 장치.

제어장치 -> 명령어를 해석하고 처리하는 장치.

레지스터 -> 연산과 처리를 위해 명령어와 데이터를 저장해놓는 장치.

 

프로그램을 실행하고 명령어를 처리하기 위해서는 우선 데이터와 명령어가 메모리에 적재되어 있어야 한다.

제어장치가 메인보드의 시스템버스(주소 버스, 명령어 버스, 데이터 버스)를 통해 메모리에 주소와 명령어를 하달하면

해당 주소와 명령어 내용을 참조해 필요한 데이터를 레지스터에 전달하고, 그를 이용해서 ALU가 연산한다.

 

cpu에서 연산을 위해 메모리에 적재된 데이터를 읽을 때 데이터 읽기 명령어를 사용하는 것이고.

cpu에서 연산을 한 뒤 레지스터에 저장해둔 값을 메모리에 적을때는 메모리 쓰기 명령어로 특정 주소에 결과를 저장한다.

 

2의 보수법

모든 비트에 not 연산 수행 후 1을 더해준다.

 

컴퓨터에서 한글 인코딩 방법

EUC-KR은 2바이트를 사용하는 완성형(각 글자에 코드가 할당되어있음) 인코딩방식.

유니코드는 특정 글자에 할당된 코드에 따라서 사용 되는 용량이 다르다.

각 바이트의 앞쪽 비트로 사용할 바이트를 표시하여 구분할 수 있다.

 

고급언어 저급언어

고급언어의 소스코드는 컴파일러에 의해 목적코드화 되고 파일간 링킹 후 실행파일화 된다.

Java는 JVM에서 실행되기 위한 자바 바이트 코드화 까지 컴파일 되고

그상태에서 인터프리팅 되며 실행되기에 플랫폼 독립적이다.

 

연산코드, 오퍼랜드

컴파일된 코드는 opcode와 오퍼랜드 형태의 어셈블리 명령어가 된다.

명령어는 MOVE와 ADD 같은 명령 유형이 담긴 opcode와 데이터가 담긴 오퍼랜드로 이루어진다.

오퍼랜드는 함수의 인자처럼 opcode의 유형에 따라 갯수가 다르다.

opcode는 많은 용량을 차지하지 않기 때문에 오퍼랜드 자리에 많은 비트를 할당할 수 없다.

그렇기에 상황에 따라 오퍼랜드에 다른 내용이 들어간다.

1. 즉시 주소 지정방식

데이터가 직접 오퍼랜드에 들어간다.

2. 직접 주소 지정방식

데이터가 담긴 메모리 주소가 오퍼랜드에 들어간다

3. 레지스터 주소 지정방식

데이터가 담긴 레지스터 이름이 오퍼랜드에 들어간다.

 

1번보다 2,3번에서 적은 용량으로도 많은것을 표현할 수 있겠지만

메모리 주소를 표현하거나 레지스터 위치를 표현하기에도 용량이 부족할 수 있기 때문에

 

4. 간접 주소 지정방식

데이터가 담긴 메모리 주소 갖고 있는 곳의 메모리 주소를 오퍼랜드에 넣는다

(4번 방법의 경우에는 메모리에 두번 접근해야 하기 때문에 오버헤드가 커진다)

5. 레지스터 간접 주소 지정방식

데이터가 담긴 메모리주소를 갖고있는 레지스터의 위치를 오퍼랜드에 넣는다

(두번 접근해야 하지만, 한번은 cpu 내부에 있는 레지스터로의 접근이기에 더 빠르다)

 

연산에 필요한 데이터를 저장하고 있는 곳의 주소를 유효주소라고 한다.

 

 

 

주간미션

필수

P.51 문제 3번.

프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 합니다.


P.65 문제 3번

1101(2)를 음수로 표현한 값은 0b0011 입니다.

1101에 not 연산 수행시 0010 에 1을 더해주어 0011

 

선택

스택과 큐

다른 방식으로 pop되는 두가지 자료구조.

스택 자료구조의 경우에는 나중에 넣은것이 먼저 나오는 후입선출 구조를 띄고 있다.

1,2,3,4,5 순서로 넣으면 마지막에 넣은 5가 먼저 꺼내진다.

 

Queue의 경우에는 반대로 선입선출되는 구조를 갖고 있다.

 

main함수에서 다른 함수를 계속 호출해나가는 과정에서 함수들이 call Stack에 담겨서

return 될 때 마다 pop 되는 형식으로 작동된다.

관련글 더보기