본문 바로가기
컴퓨터 구조

컴퓨터 구조 2주차(2)

by 몰라몰라개복치 2020. 4. 16.

[컴퓨터 구조 WEEK2-2]27기 김수빈_문제.docx
0.08MB
[컴퓨터 구조 WEEK2-2]27기 김수빈_정답.docx
0.09MB

 

 

컴퓨터 프로그래밍 언어

 

상위 프로그래밍 언어

- 사람이 쉽게 식별 가능

- 컴파일러나 인터프린터에 의해 기계어로 번역됨.

ex) C, C++  

 

하위 프로그래밍 언어

- 사람이 쉽게 식별 불가능

ex) 기계어, 어셈블리

 

>> 어셈블리(Assembly) 언어

기계어를 사람이 사용하는 언어에 가깝게 문자로 기호화함

중앙처리장치(CPU)에 따라 어셈블리 언어의 형식이 다름

어셈블러: 어셈블리 언어를 번역하여 오브젝트 코드를 생성하는 프로그램

 

어셈블리 명령어

어셈블리어 명령어 형식 - 8086 (즉, 인텔 cpu 버전에서 쓰는 명령어 형식)

 

레이블 부: 연산부 오퍼랜드 부 ; 주석문 부

 

레이블 부 (Label) 

- JUMP, LOOP 와 같은 순환/반복 명령에서 CPU실행을 해당 레이블로 이동시킬 때 사용. 

- 레이블(Label) 생성할 때는 8문자 이내의 영문자/숫자를 사용함. 

- 이름 중에 공백이 있으면 안 됨. 
연산 부 (Operation) 

- 명령어 또는 지시어로 구성됨.
피연산자 부 (Operand) 

- 레지스터 이름, 정수, 라벨, 연산자, 주소 등으로 구성됨.
주석문 부 (Comment) 

- 세미콜론으로 시작함

 

ex)

def add r1, r2

 

def 이게 함수다란 식으로 문자열에게 알려주는 역할로 레이블된 것

add 연산부

r1 r2 오퍼랜드

 

 

다음과 같은 어셈블리 프로그램을 분석해보자. (**중요)

 

 

메모리상 100번쨰 주소값에 load 250이란 데이터가 저장되어 있음.

명령어 해독기로 들어갈 때는 1250로 형태가 바뀌어짐.

이때 1을 보고 명령어 해독

 

 

 

 

 

 

 

이떄 pc프로그램 카운터, ac누산기, ir명령어 레지스터

 

(1) PC가 100번이므로 100번지에 있는 값을 IR로 가져옴 => 명령어 해독기에서 1이란 명령어를 보고 LOAD 실행

=> 그래서 250번지로 가서 4란 데이터를 읽고 이를 AC에 넣음 => 이 사이에 PC는 1 증가한 101번지를 가리킴

 

2) PC가 101번이므로 101번지에 있는 값인 5251을 IR로 가져옴 => 명령어 해독기에서 5이란 명령어를 보고 ADD 실행 => 251번지에 있는 데이터인 3이란 값을 AC란 누산기에 있는 값과 합침 =>이 사이에 PC는 1 증가한 102번지를 가리킴
(alu에 가져오고 alu에 자연스럽게 4+3을 다시 누산기에 넣음) 

 

**누산기는 덧셈과정에서 데이터를 임시로 가져오는 것이기 때문에 말하지 않아도 누산기에 있는 값을 더하고
다시 누산기에 저장시킴

 

 

3) PC가 102번이므로 102번지에 있는 값인 2251을 IR로 가져옴 => 이때 2는 STORE이므로 저장을 맡음 AC에 있는 값을 251번지에 저장하는 것이다(즉 251번지에 7이 저장) => 이 사이에 PC는 1 증가한 103번지를 가리킴

 

 

 

4)  PC가 103번이므로 103번지에 있는 값인 8170을 IR로 가져옴=> 8170의 8은 JUMP란 명령어임=>170번지로 점프하여 PC 값을 170로 바꿔줌 

 

 

제대로 숙지할 것!

 

 

>>명령어 집합

 

명령어 집합

- CPU가 수행할 동작을 정의하는 2진수 코드로 된 명령어들의 집합 

- 일반적으로 어셈블리 코드(assembly code) 형태로 표현됨 

- CPU의 사용목적, 특성에 따라 결정됨

 

 

명령어 집합 설계를 위해 결정되어야 할 사항들 

- 연산 종류 : CPU가 수행할 연산들의 수와 종류 및 복잡도 

- 데이터 형태 : 연산을 수행할 데이터들의 형태, 데이터의 길이(비트 수), 수의 표현 방식 

- 명령어 형식 : 명령어의 길이, 오퍼랜드 필드들의 수와 길이 

- 주소지정 방식 : 피연산자의 주소를 지정하는 방식

 

 

 

>>명령어 형식

연산 코드 

- 함수연산기능,전달기능,제어기능,입출력기능

 

오퍼랜드 

- 연산을 수행하는데 필요한 데이터 혹은 데이터의 주소

 

함수 연산 기능 

- 산술 연산이나 논리 연산 수행 

 

전달 기능 

- CPU와 주기억장치 사이, CPU 내의 레지스터 간의 정보교환과 적재, 저장기능을 수행 

- 정확한 데이터 전송을 위해서 근원지 오퍼랜드와 목적지 오퍼랜드의 위치가 명시되어야 함 

 

제어 기능 

- 프로그램의 수행흐름을 제어 

- 분기, 서브루틴 호출 명령어 : 프로그램 내의 명령어의 실행 순서를 변경 

 

입출력 기능 

- CPU와 외부 장치들 간의 데이터 이동 수행

 

 

분기 명령어

오퍼랜드: 다음에 실행할 명령어 주소 포함

명령어 내용에 따라서 무조건 오퍼랜드의 주소로 이동하거나 조건 만족 시에만 이동

 

서브루틴(sub-routine) 호출 명령어

호출(CALL) 명령어 : 현재 프로그램 카운터(PC) 내용을 스택에 저장하고 서브루틴의 시 작 주소로 분기하는 명령어

복귀(RET) 명령어 : CPU가 원래 실행하던 프로그램으로 되돌아가도록 하는 명령어

 

 

 

 

 

 

 

출처:참고)  2019 컴퓨터 구조 호준원교수님 강의노트, 

디지털논리와 컴퓨터 설계, Harris et al. (조영완 외 번역), 사이텍미디어, 2007, 

컴퓨터 구조와 원리 (비주얼 컴퓨터 아키텍처), 신종홍 저, 한빛미디어, 2011

'컴퓨터 구조' 카테고리의 다른 글

컴퓨터 구조 4주차  (0) 2020.05.28
컴퓨터 구조 3주차(2)  (0) 2020.05.23
컴퓨터 구조 3주차(1)  (0) 2020.05.23
컴퓨터 구조 2주차(1)  (0) 2020.04.16
컴퓨터 구조 1주차  (0) 2020.04.12