티스토리 뷰

1. 저급 언어

  • 기계어
  • 어셈블리어: 0과 1로 이루어진 기계어를 읽기 편한 형태로 번역된 것
  • 컴파일 -> 저급 언어: 소스코드가 컴파일되어 목적 코드가 된다.
    • 컴파일 중 오류가 하나라도 있으면 소스 코드 전체가 실행되지 않는다.
  • 인터프리터 -> 저급 언어: 한 줄씩 실행
    • 오류 발생 전까지만 실행한다.

2. 명령어 구조와 주소 지정 방식

  • 명령어 = 연산코드 + 오퍼랜드(연산에 사용될 데이터가 저장된 위치)
  • 유효주소: 연산에 사용할 데이터가 저장된 위치
  • 명령어 주소 지정 방식: 연산에 사용할 데이터가 저장된 위치를 찾는 방법
  • 즉시 주소 지정 방식: 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시, 가장 간단한 형태의 주소 지정 방식
  • 직접 주소 지정 방식: 오퍼랜드 필드에 유효 주소를 직접적으로 명시
  • 간접 주소 지정 방식: 오퍼랜드 필드에 유효 주소의 주소를 명시, 속도가 느림
  • 레지스터 주소 지정 방식: 연산에 사용할 데이터가 저장된 레지스터 명시
  • 레지스터 간접 주소 지정 방식: 연산에 사용할 데이터를 메모리에 저장, 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시

3. C언어 컴파일 과정

  • 전처리기 컴파일러 어셈블러 링커
  • 전처리 과정
    • 본격적으로 컴파일 하기 전 처리할 작업들
    • 외부에 선언된 다양한 소스 코드와 라이브러리
    • 프로그래밍 편의를 위해 작성된 매크로 변환
    • 컴파일 할 영역 명시
  • 컴파일러: 전처리가 완료 되어도 여전히 소스 코드
  • 어셈블러: 어셈블리어를 기계어로 변환
  • 링커

4. CPU 내부 구성 - ALU, 제어장치, 레지스터

  • ALU: 연산 장치, 레지스터로부터 피연산자를 받아들이고 제어장치로부터 제어 신호를 받아들인다.
    • 부호 플래그: 연산한 결과의 부호를 나타낸다.
    • 제로 플래그: 연산 결과가 0인지 여부를 나타낸다.
    • 캐리 플래그: 연산 결과 올림수나 빌림수가 발생했는지를 나타낸다.
    • 오버플로우 플래그: 오버플로우가 발생했는지를 나타낸다.
  • 제어장치: 제어 신호를 발생시키고 명령어를 해석하는 장치
    • 클럭 신호: 컴퓨터의 모든 부품을 움직일 수 있게 하는 시간 단위
    • 제어 신호: CPU내부(레지스터, ALU)에 전달하거나 CPU외부(메모리, 입출력장치)에 전달한다.
  • 레지스터: CPU 내부 작은 임시 저장장치, 프로그램 속 명령어와 데이터는 실행 전후로 레지스터에 저장
    • 프로그램 카운터(PC): 메모리에서 가져올 명령어의 주소를 저장한다.
    • 명령어 레지스터: 방금 메모리에서 읽어 온, 해석할 명령어를 저장한다.
    • 메모리 주소 레지스터: 메모리의 주소
    • 메모리 버퍼 레지스터: 메모리와 주고 받을 값
    • 플래그 레지스터: 연산 결과 또는 CPU 상태에 대한 부가적인 정보
    • 범용 레지스터: 다양하고 일반적인 상황에서 자유롭게 사용
    • 스택 포인터: 스택의 꼭대기를 가리키는 레지스터(스택이 어느정도 차 있는지를 표시), 메모리 안에 존재
    • 베이스 레지스터: 기준 주소를 저장
      • 변위 주소 지정 방식: 오퍼랜드 필드의 값과 특정 레지스터의 값(PC또는 베이스 레지스터)을 더하여 유효 주소 얻기
      • 상대 주소 지정 방식: 오퍼랜드 필드의 값과 PC의 값을 더하여 유효 주소 얻기
      • 베이스 레지스터 주소 지정 방식: 오퍼랜드 필드의 값과 베이스 레지스터의 값을 더하여 유효 주소 얻

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함