Megértés arról, hogy a Chrome V8 motor hogyan fordítja a JavaScriptet gépi kódba

Mielőtt mélyen belemerülnénk a Chrome V8 magjába, először tegyük le alapjainkat. Valamennyi rendszerünk mikroprocesszorokból áll, ami éppen a számítógép belsejében ül, és lehetővé teszi, hogy ezt elolvassa.

A mikroprocesszorok apró gépek, amelyek elektromos jelekkel működnek, és végül elvégzik a munkát. A mikroprocesszoroknak adunk utasításokat. Az utasítások azon a nyelven vannak, amelyet a mikroprocesszorok képesek értelmezni. A különböző mikroprocesszorok különböző nyelveket beszélnek. A leggyakoribbak közül az IA-32, x86–64, MIPS és ARM. Ezek a nyelvek közvetlenül érintkeznek a hardverrel, így a beléjük írt kódot gépi kódnak hívják. A számítógépünkre írt kódot konvertáljuk vagy fordítjuk gépi kódgá.

Így néz ki a gépi kód:

Olyan utasításokból áll, amelyeket a rendszer egy adott memóriáján hajtanak végre alacsony szinten. Szerencsésnek érezheti magát, amiért nem kellett mindezt megírnia a program futtatásához!

A magas szintű nyelveket elvonják a gépi nyelvektől. Az alábbi absztrakciós szinten láthatja, hogy a JavaScript mennyire van elvonva a gép szintjétől. A C / C ++ viszonylag sokkal közelebb áll a hardverhez és ennélfogva sokkal gyorsabb, mint a többi magas szintű nyelv.

Most térjünk vissza a V8 motorra: A V8 egy erőteljes, nyílt forráskódú Javascript motor, amelyet a Google biztosít. Mi tehát valójában a Javascript Engine? Ez egy olyan program, amely a Javascript kódot alacsonyabb szintű vagy gépi kódra konvertálja, amelyet a mikroprocesszorok megérthetnek.

Különböző JavaScript motorok vannak, beleértve az Rhino, a JavaScriptCore és a SpiderMonkey programokat. Ezek a motorok megfelelnek az ECMAScript szabványoknak. Az ECMAScript meghatározza a szkriptnyelv szabványát. A JavaScript az ECMAScript szabványokon alapszik. Ezek a szabványok meghatározzák, hogy a nyelvnek hogyan kell működnie és milyen tulajdonságokkal kell rendelkeznie. Az ECMAScriptről itt tudhat meg többet.

A Chrome V8 motor:

  • A V8-as motort C ++ nyelven írják, és a Chrome-ban és a Nodejs-ban használják.
  • Az ECMAScriptet az ECMA-262 előírások szerint hajtja végre.
  • A V8 motor önállóan képes működni, beágyazhatjuk saját C ++ programunkkal.

Értsük meg kicsit jobban az utolsó pontot. A V8 önállóan képes futtatni, és egyúttal hozzáadhatjuk saját funkcióink megvalósítását a C ++ nyelven, hogy új funkciókat adjunk a JavaScript-hez.

Tehát például: print('hello world')nem érvényes utasítás a Node.js fájlban. Hibát ad, ha lefordítjuk. De hozzáadhatjuk saját nyomtatási funkciónkat a C ++ nyelven a V8 tetejére, amely a Githubnál nyílt forráskódú, így a nyomtatási funkció natívan működik. Ez lehetővé teszi a JavaScript számára, hogy többet értsen, mint amit az ECMAScript szabvány előír, amelyet a JavaScriptnek meg kell értenie.

Ez egy hatékony szolgáltatás, mivel a C ++ programozási nyelvként több funkcióval rendelkezik, mint a JavaScript, mivel sokkal közelebb áll a hardverhez, mint például a merevlemezen található fájlok és mappák kezelése.

Ha lehetővé teszi számunkra, hogy C ++ nyelven írjunk kódot, és elérhetővé tegyük azt a JavaScript számára, akkor további funkciókat adhatunk hozzá a JavaScript-hez.

A Node.js önmagában egy V8 motor C ++ megvalósítása, amely lehetővé teszi a szerver oldali programozást és hálózati alkalmazásokat.

Most nézzük meg a motor belsejében található néhány nyílt forráskódot. Ehhez el kell mennie a v8 / minták / shell.cc mappába.

Itt láthatjuk a végrehajtását a különböző funkciók, mint például Print, és Read,amelyek natívan nem áll rendelkezésre Node.js.

Az alábbiakban láthatja a Printfüggvény megvalósítását. Amikor a print()függvényt meghívja a Node.js, visszahívást hoz létre, és a függvény végrehajtásra kerül.

Hasonlóképpen hozzáadhatjuk a különböző új funkciók saját megvalósítását a C ++ - ban a V8-on belül, lehetővé téve a Node.js számára.

Ezt bizony túl sok megfogni egy egyszerű kijelentéshez, és ennyi munkát végez a V8-as motor a motorháztető alatt.

Most már tisztában kell lennie azzal, hogy a Node.js hogyan működik, és mi is valójában a Chrome V8 motor.

Köszönjük, hogy elolvasta ezt a cikket. Kövessük nyomon a Twitter , Linkedin , GitHub , és a Facebook .