Comprender cómo el motor Chrome V8 traduce JavaScript a código de máquina

Antes de profundizar en el núcleo del V8 de Chrome, primero, analicemos nuestros fundamentos. Todos nuestros sistemas constan de microprocesadores, lo que está dentro de su computadora en este momento y le permite leer esto.

Los microprocesadores son máquinas diminutas que funcionan con señales eléctricas y, en última instancia, hacen el trabajo. Damos las instrucciones a los microprocesadores. Las instrucciones están en el idioma que pueden interpretar los microprocesadores. Los diferentes microprocesadores hablan diferentes idiomas. Algunos de los más comunes son IA-32, x86–64, MIPS y ARM. Estos lenguajes interactúan directamente con el hardware, por lo que el código escrito en ellos se llama código máquina. El código que escribimos en nuestras computadoras se convierte o compila en código de máquina.

Así es como se ve el código de máquina:

Consiste en instrucciones que se ejecutan en una parte particular de la memoria de su sistema a un nivel bajo. ¡Debe sentirse afortunado por no tener que escribir todo esto para ejecutar su programa!

Los lenguajes de alto nivel se extraen del lenguaje de máquina. En el nivel de abstracción a continuación, puede ver hasta qué punto se abstrae JavaScript del nivel de la máquina. C / C ++ está relativamente más cerca del hardware y, por lo tanto, mucho más rápido que otros lenguajes de alto nivel.

Ahora volvamos al motor V8: V8 es un potente motor Javascript de código abierto proporcionado por Google. Entonces, ¿qué es realmente un motor Javascript? Es un programa que convierte código Javascript en código de máquina o de nivel inferior que los microprocesadores puedan entender.

Hay diferentes motores de JavaScript, incluidos Rhino, JavaScriptCore y SpiderMonkey. Estos motores siguen los estándares ECMAScript. ECMAScript define el estándar para el lenguaje de secuencias de comandos. JavaScript se basa en los estándares ECMAScript. Estos estándares definen cómo debe funcionar el lenguaje y qué características debe tener. Puede obtener más información sobre ECMAScript aquí.

El motor Chrome V8:

  • El motor V8 está escrito en C ++ y se usa en Chrome y Nodejs.
  • Implementa ECMAScript como se especifica en ECMA-262.
  • El motor V8 puede funcionar de forma independiente, podemos integrarlo con nuestro propio programa C ++.

Entendamos un poco mejor el último punto. V8 puede ejecutarse de forma independiente y, al mismo tiempo, podemos agregar nuestra propia implementación de funciones en C ++ para agregar nuevas funciones a JavaScript.

Entonces, por ejemplo: print('hello world')no es una declaración válida en Node.js. Dará error si lo compilamos. Pero podemos agregar nuestra propia implementación de la función de impresión en C ++ sobre el V8 que es de código abierto en Github, haciendo que la función de impresión funcione de forma nativa. Esto permite que JavaScript comprenda más de lo que el estándar ECMAScript especifica que JavaScript debe comprender.

Esta es una característica poderosa ya que C ++ tiene más características como lenguaje de programación en comparación con JavaScript, ya que está mucho más cerca del hardware, como tratar con archivos y carpetas en el disco duro.

Permitirnos escribir código en C ++ y ponerlo a disposición de JavaScript hace que podamos agregar más funciones a JavaScript.

Node.js en sí mismo es una implementación C ++ de un motor V8 que permite aplicaciones de red y programación del lado del servidor.

Veamos ahora parte del código fuente abierto dentro del motor. Para hacer esto, debe ir a la carpeta v8 / samples / shell.cc.

Aquí puede ver la implementación de diferentes funciones como Printy Read,que no están disponibles de forma nativa en Node.js.

A continuación, puede ver la implementación de la Printfunción. Siempre print()que se invoque la función en Node.js, se creará una devolución de llamada y se ejecutará la función.

Del mismo modo, podemos agregar nuestra propia implementación de diferentes funciones nuevas en C ++ dentro de V8, lo que permite que Node.js. lo entienda.

Eso es ciertamente demasiado para asimilar una simple declaración y esa es la cantidad de trabajo que hace el motor V8 debajo del capó.

Ahora debe tener una comprensión clara de cómo funciona Node.js y qué es realmente el motor Chrome V8.

Gracias por leer este artículo. Vamos a dar seguimiento a Twitter , Linkedin , Github , y Facebook .