내 소식

✨컴공주✨ [1052682] · MS 2021 (수정됨) · 쪽지

2023-03-02 18:11:09
조회수 2,836

컴공 일기233

게시글 주소: https://dev.orbi.kr/00062278838

컴파일러는 쉽게 생각하면 "번역"을 하는 도구라고 생각할 수 있어요. 번역이라는 건, 일종의 매개죠. 사람과 컴퓨터의 언어는 다르니까, 컴파일러라는 매개체가 그 중간에 껴서 그들이 원활히 소통할 수 있도록 돕는 것이지요.


Max.asm(어셈블리 코드)



@R0

D=M              // D = first number

@R1

D=D-M            // D = first number - second number

@OUTPUT_FIRST

D;JGT            // if D>0 (first is greater) goto output_first

@R1

D=M              // D = second number

@OUTPUT_D

0;JMP            // goto output_d

(OUTPUT_FIRST)

@R0             

D=M              // D = first number

(OUTPUT_D)

@R2

M=D              // M[2] = D (greatest number)

(INFINITE_LOOP)

@INFINITE_LOOP

0;JMP            // infinite loop


이것처럼, 사람들이 사용하는 언어는 기본적으로 '문자'입니다. 상형문자라든가, 한자라든가, 결국 어떤 하나의 대상을 가리키고 지시할 때 인간은 숫자보다 문자를 더 선호할 수밖에 없습니다. 숫자보단 문자가 기억하기도, 직관적으로 이해하기도 편리하니까요. 예전에 수능 지문에 도메인 네임과 관련한 지문이 출제되었던 걸로 기억하는데, 그 도메인 네임을 도입하게 된 것도 이러한 맥락 때문입니다. 기본적으로 IP주소는 숫자인데, 이걸 인간이 일일이 기억하기가 여간 쉽지가 않다는 것이지요. 도리어, 그 숫자들을 어떤 하나의 문자열로 바꾸어서 생각하는 것이 훨씬 더 편리하교 효율적이라는 것이지요. 인간의 사고에서는요.


하지만, 참 안타까운 건, 컴퓨터가 사용하는 언어는 문자가 아니라 철저히 숫자라는 점입니다. 따라서, 문자를 기본 규범으로 삼는 사람이 숫자(0,1)를 기본 규범으로 삼는 컴퓨터와 소통하기 위해서는 문자 언어를 숫자 언어로 바꾸어주는 번역 기능이 필요하게 됩니다. 그래야지만, 컴퓨터는 우리가 원하는 말, 생각, 논리를 이해할 수 있습니다. 컴퓨터 공학에서, 이러한 번역 과정을 수행하는 도구를, 흔히 컴파일러(Compiler)라고 불러요. 


컴파일러는 위의 문자 코드들을 숫자 코드로 바꾸어주는 역할을 수행합니다. 


Max.Hack(기계어 코드) 


0000000000000000

1111110000010000

0000000000000001

1111010011010000

0000000000001010

1110001100000001

0000000000000001

1111110000010000

0000000000001100

1110101010000111

0000000000000000

1111110000010000

0000000000000010

1110001100001000

0000000000001110

1110101010000111



 이러한 숫자 코드를, '기계어'라고 불러요. 기계가 알아들을 수 있는 언어니까요. 그리고, 이러한 기계어들의 집합, 모음이 결국 '프로그램'의 정의가 됩니다. 프로그램이라는 것은 곧, 이러한 기계어들의 모임이랍니다. 

rare-백예린입니다

0 XDK (+0)

  1. 유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.

✨컴공주✨ [1052682]

쪽지 보내기