[CS] μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μ½λλ₯Ό μ€ννλ κ³Όμ
μλ°μ€ν¬λ¦½νΈλ₯Ό μ€ννκΈ° μν΄μλ μλ°μ€ν¬λ¦½νΈ μμ§μ΄ νμνκ³ , μΉ λΈλΌμ°μ λ μλ°μ€ν¬λ¦½νΈ μμ§μ λ΄μ₯νκ³ μλ€.
λΈλΌμ°μ λ§λ€ μμ§μ μ’ λ₯κ° λ€λ₯΄μ§λ§, μ½λλ₯Ό μ€ννλ λ°©μμ λΉμ·νλ€. (V8, SpiderMonkey, Javascript core λ±μ ꡬνμ΄ κ°κ° λ€λ₯΄λ€.)
1. μμ€μ½λλ₯Ό λ§λλ©΄ νμ±νμ¬ AST(Abstract Syntax Tree)λ‘ λ³ννλ€.
2. μΈν°ν리ν°(Interpreter)λ ASTλ₯Ό κΈ°λ°μΌλ‘ λ°μ΄νΈμ½λ(Bytecode)λ₯Ό μμ±νλ€.
3. μΈν°ν리ν°κ° λ°μ΄νΈμ½λλ₯Ό μ€νν λ, μμ£Ό μ¬μ©λλ ν¨μ λ° νμ μ 보 λ±μ΄ μλ νλ‘νμΌλ§ λ°μ΄ν°(Profiling data)μ κ°μ΄ μ΅μ ν μ»΄νμΌλ¬(Optimizing compiler)μκ² λ³΄λΈλ€.
4. μ΅μ ν μ»΄νμΌλ¬λ νλ‘νμΌλ§ λ°μ΄ν°λ₯Ό κΈ°λ°μΌλ‘ μ΅μ νλ μ½λ(Optimized code)λ₯Ό μμ±νλ€.
5. νμ§λ§, νλ‘νμΌλ§ λ°μ΄ν° μ€μ μλͺ»λ λΆλΆμ΄ μλ€λ©΄ μ΅μ ν ν΄μ (Deoptimize)λ₯Ό νκ³ λ€μ λ°μ΄νΈμ½λλ₯Ό μ€νν΄μ μ΄μ λμμ λ°λ³΅νλ€.
μ°Έκ³
https://github.com/baeharam/Must-Know-About-Frontend/blob/main/Notes/frontend/engine.md