Dog foot print

[C-Architecture] 컴퓨터의 표현 본문

카테고리 없음

[C-Architecture] 컴퓨터의 표현

개 발자국 2019. 9. 10. 23:17

 

 

컴퓨터는 우리가 쓰는 언어와 수식을 어떻게 인식하고 이해하는 것일까 ? 사실 컴퓨터는 0과 1말고는 이해하지 못한다. 이 0과 1을 기계어라고 하는데, 우리는 0과 1이아닌 C, C++,JAVA,JAVASCRIPT,C#등 다양한 언어를 활용해서 프로그래밍을 하고 컴퓨터를 학습시킨다.. 이렇게 사람들이 이해하기 쉬운 언어를 컴퓨터언어에서는 고급언어라고 칭한다.

 

기계어(machine language)

기계어는 1과 0으로 이루어진 이진수로 이루어져있는 언어로써 CPU가 직접 해독하고 실행할 수 있는 비트 단위로 쓰인 컴퓨터 언어를 통틀어 일컫는다.

https://ko.wikipedia.org/wiki/기계어

 

실제로는 0과 1이라기 보다는 전기적 신호가 있나 없나이다. 그렇기에 지금처럼 반도체를 쓰지않던 예전에는 진공관이나 천공카드처럼 불이켜져있나, 천공카드가 뚫려있나로 비트를 계산했다. 

 

이진코드로 이루어진 코드는 보기 상당히 난해한데, 위키백과를 보면 흔치는 않지만 사람이 직접 이진코드로도 프로그래밍 했던 것 같다.. 

 

해당 이미지는 프로그래머 유머에 자주 등장하는 키보드인데, 아마 프로그래머식 조크를 위한 가상의 키보드 인 듯 하다. 

 

요약 

  • 기계 코드, binary language,저급언어라고도 불리운다.
  • 컴퓨터 하드웨어 부품들이 이해 할수 있는 언어로써,2진 비트로들로 구성됨

고급언어(high-level language)

우리가 프로그래밍을 할때 흔히 쓰는 C,C#,C++,JAVA,파이썬,GO,JAVASCRIPT,PHP 등이 이 HIGH LEVEL LANGUAGE에 속한다. 

 

이 고급언어는 실행하는 데 있어 3가지 방식에 따라 인터프리터언어, 컴파일러언어, source to source 방식으로 구분한다. 

 

인터프리터언어

 

인터프리터는 프로그래밍 언어의 소스코드를 바로 실행하는 컴퓨터 프로그램을 의미하는데, 다음 3가지 과정 중 적어도 한가지 기능을 가진다.

 

  1. 소스코드를 직접 실행한다.
  2. 소스 코드를 효율적인 다른 중간 코드로 변환하고, 변환한 것을 바로 실행한다
  3. 인터프리터 시스템의 일부인 컴파일러가 만든, 미리 컴파일된 저장 코드의 실행을 호출한다.

https://ko.wikipedia.org/wiki/인터프리터

 

이에는 자바스크립트 , python , ruby, html 등이 있는데, 이 언어들은 컴파일이라는 과정을 거치지 않고 브라우저, node.js, 명령프롬프트에서 바로 실행이 가능하다. 

 

컴파일언어

 

컴파일이란 고급언어를 저수준의 기계어로 만드는 과정을 통틀어서 일컫는 말이다. 컴파일 언어는 실행하기위해서 직접 소스코드를 작동시킬수 없고, 컴파일러가 소스코드를 기계어로 컴파일 해서 실행이 가능하다. 그렇기에 c언어 계열의 언어를 수정하면 다시한번 컴파일 해서 목적코드를 만든 뒤 수정된 파일을 실행 할 수 있다. 

 

어셈블리언어(assembly language)

어셈블리어는 기계어와 일대일 대응이 되는 또 다른 저급언어이다. 

 

설명에는 고급언어와 기계어 사이의 중간 언어라고 되어있는데 , 보기힘든 기계어를 니모닉 기호라는 것으로 정해 사람이 좀 더 쉽게 제어 할 수 있도록 한 것이다. 그래서 사람이 좀더 보기 쉽게 만들었다고 중간언어라고 한 것 같다.

 

 이 어셈블리 언어는 어셈블러라는 것이 니모닉기호를 목적코드로 변환 후, 메모리 위치와 기타 존재물에 따라 식별자를 다시 분석함으로써 목적코드를 만들어 낸다. 

 

 

 

기계명령어 형식

기계 명령어는 기계어로 이루어진 명령어로써 프로세스가 처리할 연산에 대한 정보와 해당 연산에 쓰일 값들을 가지고 있는 주소로 구성되어 있다. 

 

 

Opcode(operation code) 

 

cpu가 수행할 연산을 지정해주는 비트들로 구성되어 있다. 

MIPS(Microprocessor without Interlocked Pipeline Stages)란 MIPS Technologies에서 개발한  RISC  기반의 명령어 집합 체계이다

 

 

컴퓨터 별로 정해진 op code의 비트 수에 따라 연산의 최대 수가 달라진다. 비트 수가 4개 라면 2의 4승 : 16개의 연산을 할 수 있다. 

 

Operland

 

연산에 사용될 데이터 혹은 그것이 저장되어 있는 메모리 주소를 담고 있는 부분이다. 

 

오퍼랜드는 컴퓨터의 처리 능력에 따라 여러개의 오퍼랜드로 구성된다. 

 

단어(Word)

 

명령어와 데이터는 지정된 메모리에 저장되는데, 이때 메모리에 저장되는 정보(data)의 기본 단위를 Word라고 한다. 

 

이 word는 cpu에 의해서 한번에 처리될 수 있는 비트들의 그룹을 이야기 하는데 os를 설치해본 경험이 있다면 64,32,128단위로 OS가 나뉘어진 것을 볼 수 있을것이다. 이 os 단위들은 cpu가 처리할 수 있는 word에 따라서 각기 다른 운영체제를 지원하는데 이 단위가 높을 수록 cpu가 처리 할 수 있는 워드의 양이 높기 때문에 높을수록 높은 성능을 보여준다.

 

단 주소단위는 단어 단위 혹은 바이트 단위(보통은 8bit)를 사용한다. 

 

 

 

 

반응형
Comments