티스토리 뷰
1. 저급 언어
- 기계어
- 어셈블리어: 0과 1로 이루어진 기계어를 읽기 편한 형태로 번역된 것
- 컴파일 -> 저급 언어: 소스코드가 컴파일되어 목적 코드가 된다.
- 컴파일 중 오류가 하나라도 있으면 소스 코드 전체가 실행되지 않는다.
- 인터프리터 -> 저급 언어: 한 줄씩 실행
- 오류 발생 전까지만 실행한다.
2. 명령어 구조와 주소 지정 방식
- 명령어 = 연산코드 + 오퍼랜드(연산에 사용될 데이터가 저장된 위치)
- 유효주소: 연산에 사용할 데이터가 저장된 위치
- 명령어 주소 지정 방식: 연산에 사용할 데이터가 저장된 위치를 찾는 방법
- 즉시 주소 지정 방식: 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시, 가장 간단한 형태의 주소 지정 방식
- 직접 주소 지정 방식: 오퍼랜드 필드에 유효 주소를 직접적으로 명시
- 간접 주소 지정 방식: 오퍼랜드 필드에 유효 주소의 주소를 명시, 속도가 느림
- 레지스터 주소 지정 방식: 연산에 사용할 데이터가 저장된 레지스터 명시
- 레지스터 간접 주소 지정 방식: 연산에 사용할 데이터를 메모리에 저장, 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시
3. C언어 컴파일 과정
- 전처리기 컴파일러 어셈블러 링커
- 전처리 과정
- 본격적으로 컴파일 하기 전 처리할 작업들
- 외부에 선언된 다양한 소스 코드와 라이브러리
- 프로그래밍 편의를 위해 작성된 매크로 변환
- 컴파일 할 영역 명시
- 컴파일러: 전처리가 완료 되어도 여전히 소스 코드
- 어셈블러: 어셈블리어를 기계어로 변환
- 링커
4. CPU 내부 구성 - ALU, 제어장치, 레지스터
- ALU: 연산 장치, 레지스터로부터 피연산자를 받아들이고 제어장치로부터 제어 신호를 받아들인다.
- 부호 플래그: 연산한 결과의 부호를 나타낸다.
- 제로 플래그: 연산 결과가 0인지 여부를 나타낸다.
- 캐리 플래그: 연산 결과 올림수나 빌림수가 발생했는지를 나타낸다.
- 오버플로우 플래그: 오버플로우가 발생했는지를 나타낸다.
- 제어장치: 제어 신호를 발생시키고 명령어를 해석하는 장치
- 클럭 신호: 컴퓨터의 모든 부품을 움직일 수 있게 하는 시간 단위
- 제어 신호: CPU내부(레지스터, ALU)에 전달하거나 CPU외부(메모리, 입출력장치)에 전달한다.
- 레지스터: CPU 내부 작은 임시 저장장치, 프로그램 속 명령어와 데이터는 실행 전후로 레지스터에 저장
- 프로그램 카운터(PC): 메모리에서 가져올 명령어의 주소를 저장한다.
- 명령어 레지스터: 방금 메모리에서 읽어 온, 해석할 명령어를 저장한다.
- 메모리 주소 레지스터: 메모리의 주소
- 메모리 버퍼 레지스터: 메모리와 주고 받을 값
- 플래그 레지스터: 연산 결과 또는 CPU 상태에 대한 부가적인 정보
- 범용 레지스터: 다양하고 일반적인 상황에서 자유롭게 사용
- 스택 포인터: 스택의 꼭대기를 가리키는 레지스터(스택이 어느정도 차 있는지를 표시), 메모리 안에 존재
- 베이스 레지스터: 기준 주소를 저장
- 변위 주소 지정 방식: 오퍼랜드 필드의 값과 특정 레지스터의 값(PC또는 베이스 레지스터)을 더하여 유효 주소 얻기
- 상대 주소 지정 방식: 오퍼랜드 필드의 값과 PC의 값을 더하여 유효 주소 얻기
- 베이스 레지스터 주소 지정 방식: 오퍼랜드 필드의 값과 베이스 레지스터의 값을 더하여 유효 주소 얻
'CS' 카테고리의 다른 글
#5. 컴퓨터구조 + 운영체제 17강 ~ 19강 (0) | 2022.12.13 |
---|---|
#4. 컴퓨터구조 + 운영체제 14강 ~ 16강 (0) | 2022.12.12 |
#3. 컴퓨터 구조 + 운영체제 11강 ~ 13강 (0) | 2022.12.09 |
#1. 컴퓨터 구조 + 운영체제 0강~3강 (0) | 2022.12.07 |