1. 컴퓨터 프로그래밍 언어
1) 상위 프로그래밍 언어
- 컴파일러나 인터프린터에 의해 기계어로 번역
- 사람이 이해하기 쉬움
- C, C++
2) 하위 프로그래밍 언어
- 하드웨어와 가까워진 언어
- 기계어, 어셈블리어
2. 어셈블리 언어
- 기계어를 사람이 사용하는 언어에 가깝게 문자로 기호화
- 중앙처리장치에 따라 어셈블리 언어의 형식이 다르다
- 어셈블러 : 어셈블리 언어를 번역해 오브젝트 코드를 생성하는 프로그램
1) 어셈블리 명령어 레이블 부 : 연산부 오퍼랜드 부 ; 주석부
(1) 레이블 부
- JUMP, LOOP와 같은 순환/반복 명령에서 CPU 실행을 해당 레이블로 이동시킬 때 사용
- 레이블을 생성할 때는 8문자 이내의 영문자/숫자를 사용
- 이름 중 공백이 있으면 안됨
(2) 연산 부
- 명령어 또는 지시어로 구성
(3) 피연산자 부
- 레지스터 이름, 정수, 라벨, 연산자, 주소 등으로 구성
(4) 주석문 부
- 세미콜론으로 시작
2) 프로그램 예제
- PC : 프로그램 카운터 AC : 누산기 IR : 인스트럭션 레지스터 ALU : 산술 논리 장치
(1) 가장 먼저 패치 단계에서 PC에는 첫번째 주소인 100이 IR에는 명령의 기계 코드인 1250이 들어간다.
그 후 명령어 해독기로 해석하여 LOAD 250을 수행해 연산 값을 AC에 넣어주고 PC는 다음 주소인 101
로 바뀌게 된다.
(2) 다음 주소인 101에 해당하는 기계 코드 5251을 IR에 넣어준다. 그 후 명령어 해독기에서 기계 코드를
해독해 ADD 251을 수행한다. 그리고 PC에 다음 주소인 102를 담아주고 ADD 251은 251 주소에 담겨있
는 3과 AC에 들어있는 4를 더하는 연산이므로 ALU에서 도출된 값을 AC에 넣어준다.
(3) 다시 패치를 통해 다음 기계어 코드인 2251를 IR에 넣어주고 명령어 해독기로 이에 해당하는 명령어
STOR 251을 해독한다. 이를 해독하면 현재 AC에 있는 값(7)을 251주소에 저장한다는 의미이므로 251에
7을 저장해주고 PC는 다음 주소인 103으로 바뀐다
(4) 다시 패치를 통해 IR에 다음 기계 코드인 8170을 담아준다. 그리고 명령어 해독기를 통해 이에 해당하는
명령어인 JUMP 170을 수행한다. 이는 주소가 170인 곳으로 점프하라는 뜻이므로 PC의 값을 170으로 바
뀐다.
3. 명령어
1) 명령어 집합
- CPU가 수행할 동작을 정의하는 2진수 코드로 된 명령어들의 집합
- 일반적으로 어셈블리 코드형태로 표현됨
- CPU의 사용목적, 특성에 따라 결정
2) 명령어 집합 설계를 위해 결정되어 할 사항들
- 연산 종류 : CPU가 수행할 연산들의 수와 종류 및 복잡도
- 데이터 형태 : 연산을 수행할 데이터들의 형태, 데이터의 길이, 수의 표현 방식
- 명령어 형식 : 명령어의 길이, 오퍼랜드 필드들의 수와 길이
- 주소지정 방식 : 피연산자의 주소를 지정하는 방식
3) 명령어 형식
(1) 연산 코드
- 함수 연산 기능
· 산술 연산이나 논리 연산 수행
- 전달 기능
· CPU와 주기억장치 사이, CPU 내의 레지스터 간의 정보교환과 적재, 저장 기능을 수행
· 정확한 데이터 전송을 위해 근원지 오퍼랜드와 목적지 오퍼랜드의 위치가 명시되어야 함
- 제어 기능
· 프로그램의 수행흐름을 제어
· 분기 명령어 – 명령어 내용에 따라 무조건 오퍼랜드의 주소로 이동하거나 조건 만족 시에만 이동
· 서브루틴 호출 명령어 – 프로그램 내의 명령어의 실행 순서 변경
· 호출 명령어 : 현재 PC 내용을 스택에 저항하고 서브루틴의 시작 주소로 분기하는 명령어
· 복귀 명령어 : CPU가 원래 실행하던 프로그램으로 되돌아가도록 하는 명령어
- 입출력 기능
· CPU와 외부 장치들 간의 데이터 이동 수행
- 오퍼랜드
· 연산을 수행하는데 필요한 데이터 혹은 데이터의 주소
4. 퀴즈
'Study > 컴퓨터 구조' 카테고리의 다른 글
컴퓨터 구조 - 분기 명령어와 서브루틴 (0) | 2020.05.29 |
---|---|
컴퓨터 구조 - 메모리 구조와 레지스터 (0) | 2020.05.23 |
컴퓨터 구조 - 명령어를 효과적으로 실행하기 위한 기법 (0) | 2020.05.23 |
컴퓨터 구조 - 데이터의 표현과 컴퓨터 연산 (0) | 2020.04.18 |
컴퓨터 구조 - 컴퓨터 구성요소 (하드웨어) (0) | 2020.04.12 |
댓글