Új hozzászólás Aktív témák

  • nagygabe

    csendes tag

    válasz tzl #19465 üzenetére

    "> Interpreters also need to compile to bytecode before execution.

    This is not true. An interpreter will typically (if implemented in a language
    like C) consist of a big "switch" statement that decodes each bytecode as it
    runs, and then implements the corresponding operation by moving data around its
    data structures that implement the virtual machine spec."

    Tehát az interpreter veszi a következő végrehajtandó bájtkódot, és ez alapján végrehajtja a megfelelő (gépi kódú) utasítássorozatot. Majd jön a következő bájtkód. Azaz nagyjából bájtkódonként megnézi, hogy mit kell tenni, és meghívja a megfelelő rutint. Nem készít egy új natív programot a memóriában.
    A JIT lefordítja tényleges natív kódra a bájtkódot. Ezt teheti blokkonként, eljárásonként, vagy forrásfájlonként, stb.. Fordítás után pedig végrehajtja azt. A lefordított kódot pedig elteszi a cache-be, ezért egy sűrűn használt eljárást nem fog mindig újrafordítani.

Új hozzászólás Aktív témák