# 5. 컴퓨터 구조 5일차(230918)

brand_mins·2023년 9월 18일

Computer Architecture

목록 보기
5/7

1. 명령어

(1) 고급언어와 저급언어

  • 우리가 프로그램을 만들 때 사람이 이해하기 쉬운 언어를 고급언어라고 함.
  • 컴퓨터가 직접 이해하고 실행할 수 있는 언어는 저급언어
  • 고급 언어로 작성된 소스코드가 실행되려면 반드시 저급언어 즉, 명령어로 변환되어야 한다.

1) 저급언어-기계어

  • 0과 1의 명령어 비트로 이루어진 언어
  • 컴퓨터는 0과 1로 이루어진 기계어를 이해하고 실행

2) 저급언어-어셈블리어

  • 기계어로 읽기 편한 형태로 번역한 언어
push	rbp
mov		rbp, rsp
mov		DWORD PTR [rbp-4], 1
mov 	DWORD PTR [rbp-4], 2
mov 	edx, DWORD PTR[rbp-4]
mov 	eax, DWORD PTR[rbp-8]
add 	eax, edx
mov		DWORD PTR [rbp-12], eax
mov 	eax, 0
pop		rbp
ret
  • 어셈블리어는 매우 중요한 관찰의 대상
  • 어셈블리어를 읽으면 컴퓨터가 프로그램을 어떤 과정으로 실행하는지 알 수 있음.

(2) 컴파일 언어와 인터프리터 언어

1) 컴파일 언어

  • 컴파일러에 의해 소스 코드 전체가 저급언어로 변환되어 실행되는 고급언어
  • 컴파일: 작성된 소스코드를 저급언어로 변환시키는 과정
  • 컴파일러: 컴파일을 수행해주는 도구
  • 오류가 하나라도 발생하면 컴파일 실패.
  • 컴파일러를 통해 저급언어로 변환된 코드: 목적코드

2) 인터프리터 언어

  • 소스코드가 한줄씩 실행되는 고급언어(예:파이썬)
  • 인터프리터: 소스코드를 한줄씩 저급언어로 변환하여 실행해주는 도구
  • 인터프리터 언어는 소스 코드를 한줄씩 실행하기 때문에 소스코드 n번째 줄에 오류가 있더라도 n-1번째 줄까지 올바르게 수행
  • 인터프리터 언어는 컴파일언어보다 느림

(3) 목적파일 vs 실행파일

  • 목적코드로 이루어진 파일: 목적파일
  • 실행코드로 이루어진 파일: 실행파일
  • 목적코드가 실행 파일이 되기 위해서 링킹이라는 작업을 거친다.
링킹
helper.c와 main.c라는 두개의 소스코드 작성했다고 가정

main.c
helper.c에 있는 HELPER_더하기

화면 출력 라이브러리

helper.c
HELPER_더하기

이들을 컴파일하면 소스코드로부터 목적 코드가 생성되고 
helper.c와 main.c 목적 파일은 각각 helper.o, main.o
main.o는 저급언어라 실행할 수 없음.
main.o는 main.c 내용이 그대로 저급언어로 변환될뿐 어떻게 실행되는지 알 수 없다.
main.o가 실행되면 main.o에 없는 외부 기능을 출력하는 기능을 연결하는 작업을 링킹이라고 한다.
profile
IT 개발자가 되기 위한 기록

0개의 댓글