컴퓨터가 이해할 수 있는 정보는 두가지.
항상 강조 드립니다.
- `데이터`
- `명령어`
왜 명령어를 알아야 하는가?
개발자가 작성한 소스코드가 명령어로 변환되어, 컴퓨터가 이를 인식하고 동작하기 때문입니다.
고급언어 vs 저급언어
- 고급 언어 : 사람이 이해하고 작성하기 쉽게 만들어진 언어 (소스코드로 복잡한 프로그램 구현 가능)
- 저급 언어 : 컴퓨터가 이해하고 실행할 수 있는 언어
- 기계어 : 이진수(0,1) 또는 십육진수(0~9, A~F)로 구성가능 → 한눈에 이해하기 어렵다!
- 어셈블리어 ★ : 기계어를 읽기 편한 형태로 번역한 언어
예시를 통해 기계어와 어셈블리어를 살펴보겠습니다.
기계어 | 어셈블리어 |
10110000 01100001 | mov al, 061h |
mov : move
al : CPU안에 있는 변수를 저장하는 레지스터
061h : 16진수 61 를 뜻함
→ 16진수 61을 al레지스터에 넣어라! 라는 뜻으로, 읽기 편한 형태의 언어가 되는 것이죠.
어떻게 명령어로 변환이 될까? (고급언어 → 저급언어)
- 컴파일 방식 : 컴파일러에 의해 소스코드 전체가 저급언어로 변환되어 실행
- 컴파일 과정에서 에러가 하나라도 발생시, `컴파일 에러` 발생하며 종료 (에러 해결전까지 정상 동작 수행 불가)
- 예시 : 자바 실행시 JVM 내부 컴파일러에 의해 소스코드(.java) → 바이트코드(.class)
- 인터프리터 방식 : 컴파일 과정없이, Line by Line으로 저급언어로 변환하며 실행
- 대표적으로 Python이 있고, N번째 줄에 에러 발생시 N-1번째 줄까지는 정상 작동함
- 컴파일 과정이 없어서, 컴파일되는 시간을 기다릴 필요가 없음
출처
'CS' 카테고리의 다른 글
[CS] 실행 흐름을 파악할 수 있는 레지스터의 종류 (0) | 2024.04.14 |
---|---|
[CS] 명령어 구조 알아보기 (0) | 2024.04.12 |
[CS] 문자집합, 인코딩, 디코딩에 대하여 (feat. 아스키코드) (0) | 2024.04.11 |
[CS] 비트 : 컴퓨터가 이해할 수 있는 가장 작은 정보의 단위 (0) | 2024.04.10 |
[CS] 컴퓨터 구조의 이해 (0) | 2024.04.09 |