ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 6. 기본 컴퓨터 프로그래밍
    전공공부/컴퓨터시스템구조 2020. 3. 26. 14:43
    728x90
    반응형

    목차

    1. 개요

    2. 기계어

    3, 어셈블리 언어

    4. 어셈블러

    5. 프로그램 루프

    6. 산술 및 논리 연산의 프로그래밍

    7. 서브루틴

    8. 입출력 프로그래밍

     

    6.1 개요

    전체 컴퓨터 시스템은 하드웨어와 소프트웨어로 구성되는데 하드웨어란 컴퓨터 실체 요소들과 관련된 장치들을 의미하고, 소프트웨어는 컴퓨터를 위해 쓰여진 프로그램들을 말한다. 프로그램을 작성하는 일은 일련의 기계 명령어를 직접 간접적으로 기술하는 것인데, 컴퓨터 내부의 기게어는 이진 형태로 되어 있으므로 이해하기가 힘들기 때문에 영자숫자 형태의 기호로 프로그램을 작성하는 것이 더욱 편리하다. 따라서 사용자 위주로 쓰여진 기호 프로그램을 하드웨어가 인지할 수 있는 이진 프로그램으로 옮길 필요가 있다.

    이 장에서는 기본 프로그래밍 개념과 명령의 하드웨어 실행과의 관계를 보이기로 하고, 그 첫번째로 사용자의 기호 프로그램을 이진 프로그램으로 번역하는 프로그램의 기본 동작과 구조를 나타낸다.

     

    6.2 기계어

    프로그램이란 컴퓨터로 하여금 원하는 데이터 처리 업무를 시행시키기 위해서 작성된 명령어 또는 문장으로 구성된 리스트이며 다음과 같은 종류가 있다.

    1. 이진코드: 메모리상에 실제로 나타나는 형태의 명령어로서 이진수 명령어와 피연산자의 시퀀스이다.

     

    2. 8진수 또는 16진수: 이진수 코드를 그대로 8진수나 16진수로 표현한 것이다.

     

    3. 기호코드: 사용자가 연산 부분, 주소 부분 등에 대하여 기호(문자, 숫자, 특수 문자 등)를 사용하게 되며, 각 기호 명령어는 하나의 이진 코드로 번역되는데 이러한 번역은 어셈블러(assembler)라는 특수한 프로그램이 하게 되기 때문에 이러한 종류의 기호 프로그램을 어셈블리 언어(assembly language)라고 부른다.

     

    4. 고급 프로그래밍 언어: 컴퓨터 하드웨어의 동작을 위주로 하지 않고 문제해결에 필요한 과정을 고려하여 개발된 언어로서 포트란 등이 그 예이다. 문제 위주의 기호와 형식을 사용하며, 각 문장들은 컴퓨터상에서 실행되기 전에 여러 개의 이진 명령어로 번역이 되는데 이러한 번역을 담당하는 프로그램을 컴파일러(compiler)라고 부른다.

     

    컴파일러란?

     컴파일러(compiler)는 해석기, 번역기라는 뜻으로 특정 프로그래밍 언어로 쓰여진 문서를 다른 프로그래밍 언어로 옮기는 프로그램을 말한다. 기존의 문서를 소스 코드 또는 원시 코드라 부르고, 출력되는 문서를 목적 코드라고 부른다. 목적 코드는 주로 다른 프로그램이나 하드웨어가 처리하기 용이한 형태로 출력되지만 그 외에도 사람이 읽을 수 있는 문서 파일이나 그림 파일 등으로 옮기는 경우도 있다. 원시 코드를 목적 코드로 옮기는 과정을 컴파일(compile) 이라고 한다.  원시 코드를 컴파일 하는 이유는 사람에게 이해하기 쉬운 형태의 고수준 언어를 기계가 이해하기 쉬운 기계어로 바꿔주기 위해서 이다. 좁은 의미로 컴파일러는 고수준 언어를 저수준 언어(어셈블리어, 기계어)로 번역해주는 프로그램을 말한다.

    고수준 언어 → 저수준 언어(어셈블리어, 기계어)

     

    어셈블러란?

      어셈블러(assembler)는 어셈블리어를 기계어 형태의 오브젝트 코드로 해석해주는 컴퓨터 언어 번역 프로그램 이다. 어셈블러는 컴퓨터 명령어들을 컴퓨터 프로세서가 기본 연산을 수행 할 수 있게 피트 패턴으로 변환시켜주는 프로그램이다.

     

    링커란?

     어셈블러를 거친 오브젝트 코드와 사용된 함수를 포함하고 있는 함수 라이브러리를 묶어주는 작업을 한다. 이 과정을 링킹이라 한다.

     

    인터프리터란?

     인터프리터(interpreter)는 해석기라는 뜻으로 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말한다. 원시 코드를 기계어로 번역하는 컴파일러와 다르다. 인터프리터는 아래 과정 중 적어도 하나의 기능을 가진 프로그램이다.

    1. 소스 코드를 직접 실행한다. 

    2. 소스 코드를 효율적인 다른 중간 코드로 변환하고, 변환한 것을 바로 실행한다.

    3. 인터프리터 시스템의 일부인 컴파일러가 만든 미리 컴파일된 코드의 실행을 호출한다.

     좁은 의미로 인터프리터는 고급언어로 작성된 원시 코드들을 한번에 한 줄씩 읽어들여서 실행하는 프로그램이다.

     

    컴파일러 vs 인터프리터

    1) 컴파일러 장점

    1. 컴파일러는 컴파일 하는 과정이 복잡하고 그 시간이 많이 걸리게 된다. 한번 컴파일 하면 그대로 사용이 가능하여 반복 작업을 할 경우 처리 시간이 매우 빠르다.
    2. 컴파일 하는 과정에서 단계별로 주기억장치안에 들어 가기 때문에 기억장소의 크기가 조정이 가능하다.
    3. 전체 실행 시간 면에서 매우 효율적이다.
    4. 컴파일러는 매번 번역할 필요가 없다. 

    2) 컴파일러 단점

    1. 한 줄의 입력 시 프로그램이 때론 몇 백 개의 기계어로 번역되기 때문에 그 프로그램은 큰 기억용량을 요구한다. 특히 입출력 명령은 입출력 형식을 위한 코드 외에 기계 상태 파악코드로 인해 큰 기억 장치가 요구된다.

    3) 인터프리터 장점

    1. 프로그램이 될 때까지 원시 언어의 형태를 유지하기 때문에 기억 장소가 따로 필요하지 않다.

    4) 인터프리터 단점

    1. 원시 프로그램을 직접 실행하기 때문에 이 실행에 필요한 소프트웨어가 항상 기계 안에 상주하면서 원시 프로그램의 명령들을 받아서 치리해야 한다. 만일 반복을 하게 되면 그때마다 원시 프로그램을 해석하고 처리해야 하기 때문에 많은 시간이 걸리기도 한다.
    2. 인터프리터의 시행 시간은 컴파일러 방법에 비해 비효율적이다.
    3. 실행순서를 맞쳐줘야한다. (실행 시간 설정을 해놔야한다.)

    5) 컴파일러 언어, 인터프리터 언어 예시

     컴파일러 언어 : Fortran, Algol, PL/1, Pascal, Cobol, C, C++

     인터프리터 언어 : Lisp, Snobol4, APL, Prolog, Python

     

    정리

     컴파일러

     C 소스등을 파싱하여, Assemble 코드로 만들어주는 프로그램

     어셈블러

     Assemble 코드를 Object(기계어)로 만들어주는 프로그램

     링커

     Object 코드를 사용된 함수 라이브러리와 묶고 실행파일로 만들어주는 프로그램

     인터프리터

     어떤 대상을 타형태로 만들지 않고 바로 실행하는 프로그램



    출처: https://lastmorning.tistory.com/entry/컴파일러-인터프리터-링커-어셈블러의-정의 [lastmorning]

     

     

     

     

     

     

     

     

     

     

    728x90
    반응형

    댓글

Designed by Tistory.