V8이 자바스크립트를 바이트 코드(bytecode)로 컴파일하고 실행한다는 내용을 보고, 바이트 코드에 대한 내용을 찾아보게 되었다. 처음에는 바이트 코드와 바이너리 코드가 동치인줄 알았어서 바이너리 코드에 대한 내용을 정리해보았고, 바이트 코드의 개념에 대해 읽다가 바이트 코드와 기계어는 어떻게 다른지가 궁금해져 관련 내용들을 찾아 정리하게 되었다.
2심볼 시스템을 사용하는 데이터를 의미한다. 주로 이진수 체계의 0과 1을 의미한다 (0, 1이 각각 데이터 하나를 나타냄). 한국어로는 이진 코드라 불린다.
CPU가 해독하고 실행할 수 있는, 비트 단위(0, 1)로 이루어진 컴퓨터 언어를 통틀어 말한다. 어셈블리어와 1:1로 대응한다.
CPU와 같은 특정 하드웨어가 아닌, 가상 컴퓨터에서 작동하는 실행 프로그램을 위한 이진 표현법이다. 가상컴퓨터 위에서 작동하기 때문에, 특정 하드웨어에 종속되지 않는다는 특징을 가지고 있다. 즉, 하드웨어에 대한 의존성이 낮다고 말할 수 있다.
바이트 코드는 컴파일 과정을 거쳐서 생성된다. 생성된 바이트 코드는, 주로, 한번에 한 명령어만 읽어 실행하는 인터프리팅 방식으로 실행이 된다.
기계어와 바이트 코드는 모두 0과 1로 이루어져있으므로, 바이너리 코드로 이루어졌다고 말할 수 있다.
기계어는 하드웨어가 이해할 수 있는 컴퓨터 언어이고, 바이트 코드는 하드웨어가 아닌 가상 컴퓨터에서 실행시킬 수 있는 코드이다. 기계어로 쓰여진 코드이냐, 바이트 코드이냐에 따라 실행할 수 있는 환경이 다르다는 것이 차이점이라고 할 수 있다.
각 용어들에 대한 개념들을 정리해본 시간이었다. 머릿속으로는 알고 있었던 개념들도 있었지만, 막상 글로 풀어내려니 명확히 알고 있지 않은 부분들이 보였다.
요즘 글쓰기의 중요성을 계속 느낀다. 시간이 좀 더 걸리더라도, 당장 다음 내용으로 넘어가고 싶은 급한 마음이 들더라도, 글로 차곡 차곡 정리해보려고 한다. 나만의 지식 자산을 많이 만들겠어🥹
참고