Understanding How the Chrome V8 Engine Translates JavaScript into Machine Code
by Mayank Tripathi Understanding How the Chrome V8 Engine Translates JavaScript into Machine Code Before diving deep into the core of Chrome’s V8, first, let’s get our fundamentals down. All of our systems consist of microprocessors, the thing that is sitt
www.freecodecamp.org
드디어 자바스크립트 엔진이다...
js엔진인 Chrome의 V8엔진을 설명하기 전에 엔진의 기본에 대해서 먼저 설명한다.
우리 시스템은 마이크로프로세스들로 구성되어있다. 이건 전기 신호를 받아 일을 수행하는 아주 작은 기계이다. 우리는 이 기계에 코드로 일을 수행하라는 명령을 보낸다.
이 마이크로프로세스들은 언어로된 명령을 알아들을 수 있는데 마이크로프로세스 별로 해석하는 언어가 다르다. IA-32, x86-64, MIPS, ARM같은 것들이 있단다.
마이크로프로세스들과 가까운 명령어(언어로 작성된 코드)에 가까울 수록 low-level언어라 하고 우리가 작성하는 코드에 가까울 수록 high-level이라 한다. 설명이 좀 이상한데 언어가 더 추상화되어 있으면 high-level에 가깝다고 한다.
- V8 engine
V8은 구글이 만들고 배포한 js엔진 오픈소스이다. 갓 구글
근데 이게 진짜 엔진일까 ?? 사실 이건 js코드를 lower-level 또는 마이크로프로세스들이 이해할 수 있는 기계어에 가깝게 변환시켜 주는 역할을 한다.
js엔진도 여러가지가 있는데 Rhino, JavaScriptCore, SpiderMonkey 등이 있다. 이 엔진들은 ECMAScript라는 표준을 따르는데, 또 ECAMAScript는 스크립팅 언어의 표준을 따른다. JS 또한 이카마스크립트 베이스이다.
기본적으로 V8은 C++로 만들어졌고 브라우저 크롬과 node.js에서 사용된다. 그래서 C++ 프로그램에 JS를 끼워 넣을 수 있다. 물론 우리가 컴파일 하면 에러가 뜨지만 할 수는 있단다. ( 여기 내용을 몰라서 모르겠다 )
어찌 됬든 V8엔진이 만든 C++과의 합작이 JS를 하드웨어에 접근 할 수 있게 만들었고 이게 보통 JS엔진과 큰 차이를 보인다는 내용이 있었다. 뭐 대충 Node.js의 탄생같은거 말한거 같다.