Capire come il motore Chrome V8 traduce JavaScript in codice macchina

Prima di immergerci in profondità nel cuore del V8 di Chrome, innanzitutto, analizziamo i nostri fondamentali. Tutti i nostri sistemi sono costituiti da microprocessori, la cosa che si trova nel tuo computer in questo momento e che ti consente di leggere questo.

I microprocessori sono macchine minuscole che funzionano con segnali elettrici e alla fine fanno il lavoro. Diamo le istruzioni ai microprocessori. Le istruzioni sono nella lingua che i microprocessori possono interpretare. Microprocessori diversi parlano lingue diverse. Alcuni dei più comuni sono IA-32, x86-64, MIPS e ARM. Questi linguaggi interagiscono direttamente con l'hardware, quindi il codice scritto in essi è chiamato codice macchina. Il codice che scriviamo sui nostri computer viene convertito o compilato in codice macchina.

Ecco come appare il codice macchina:

Consiste di istruzioni che vengono eseguite in un particolare pezzo di memoria nel sistema a un livello basso. Devi sentirti fortunato per non dover scrivere tutto questo per eseguire il tuo programma!

I linguaggi di alto livello sono astratti dal linguaggio macchina. Nel livello di astrazione sottostante, puoi vedere fino a che punto JavaScript è astratto dal livello della macchina. C / C ++ sono relativamente molto più vicini all'hardware e quindi molto più veloci di altri linguaggi di alto livello.

Ora torniamo al motore V8: V8 è un potente motore Javascript open source fornito da Google. Quindi cos'è in realtà un motore Javascript? È un programma che converte il codice Javascript in codice macchina o di livello inferiore che i microprocessori possono comprendere.

Esistono diversi motori JavaScript tra cui Rhino, JavaScriptCore e SpiderMonkey. Questi motori seguono gli standard ECMAScript. ECMAScript definisce lo standard per il linguaggio di scripting. JavaScript è basato sugli standard ECMAScript. Questi standard definiscono come dovrebbe funzionare la lingua e quali caratteristiche dovrebbe avere. Puoi saperne di più su ECMAScript qui.

Il motore Chrome V8:

  • Il motore V8 è scritto in C ++ e utilizzato in Chrome e Nodejs.
  • Implementa ECMAScript come specificato in ECMA-262.
  • Il motore V8 può funzionare da solo, possiamo incorporarlo con il nostro programma C ++.

Cerchiamo di capire un po 'meglio l'ultimo punto. V8 può essere eseguito autonomamente e allo stesso tempo possiamo aggiungere la nostra implementazione della funzione in C ++ per aggiungere nuove funzionalità a JavaScript.

Quindi, ad esempio: print('hello world')non è un'istruzione valida in Node.js. Darà un errore se lo compiliamo. Ma possiamo aggiungere la nostra implementazione della funzione di stampa in C ++ sopra la V8 che è open source su Github, facendo in modo che la funzione di stampa funzioni in modo nativo. Ciò consente a JavaScript di comprendere più di ciò che lo standard ECMAScript specifica che JavaScript dovrebbe comprendere.

Questa è una caratteristica potente poiché C ++ ha più funzionalità come linguaggio di programmazione rispetto a JavaScript, poiché è molto più vicino all'hardware come gestire file e cartelle sul disco rigido.

Consentirci di scrivere codice in C ++ e renderlo disponibile per JavaScript ci consente di aggiungere più funzionalità a JavaScript.

Node.js di per sé è un'implementazione C ++ di un motore V8 che consente la programmazione lato server e le applicazioni di rete.

Vediamo ora parte del codice open source all'interno del motore. Per fare ciò, devi andare nella cartella v8 / samples / shell.cc.

Qui puoi vedere l'implementazione di diverse funzioni come Printe Read,che non sono nativamente disponibili in Node.js.

Di seguito, puoi vedere l'implementazione della Printfunzione. Ogni volta che la print()funzione viene richiamata in Node.js, creerà un callback e la funzione verrà eseguita.

Allo stesso modo, possiamo aggiungere la nostra implementazione di diverse nuove funzioni in C ++ all'interno di V8 in modo che possa essere compreso da Node.js.

Questo è certamente troppo da afferrare per una semplice affermazione e questa è la quantità di lavoro che il motore V8 fa sotto il cofano.

Ora devi avere una chiara comprensione di come funziona Node.js e di cosa sia effettivamente il motore Chrome V8.

Grazie per aver letto questo articolo. Seguiamo su Twitter , Linkedin , Github , e Facebook .