title: Why is Lua designed to generate intermediate opcodes?
body: <p>I was reading Lua's source code and surprisingly found that it was implemented to generate some odd instructions (e.g. GETUPVAL, FORLOOP, etc.) Then those opcodes are executed by a virtual machine.
  Is there any benefit to do this (compared with pure AST-based interpreter?) </p>
  
  <p>Thanks.</p>