¿Por qué unity abandonó lua?
En primer lugar, ¿cómo interpreta y ejecuta JIT IL en tiempo de ejecución? El proceso general es: interpretar IL como el código de máquina de la plataforma, abrir un espacio de memoria y requerir que este espacio de memoria sea legible. , escribible y ejecutable, luego coloque el código de máquina interpretado en él, modifique la dirección en el registro del puntero de instrucción en la CPU y deje que la CPU ejecute el código de máquina explicado anteriormente.
Presta atención a las condiciones de esta memoria. La más importante es que debe ser ejecutable. Generalmente solo almacenamos datos para aplicaciones de memoria, pero si los permisos de memoria aquí tienen permisos ejecutables.
¿Cuáles son las limitaciones de iOS? IOS no permite el acceso al espacio de memoria con permisos ejecutables, lo que requiere directamente que JIT esté en modo AOT completo, traduciendo IL directamente a código de máquina antes de la generación en lugar de en tiempo de ejecución. Hasta cierto punto, C# se ha convertido en un lenguaje compilado como C++ y ha perdido la función de interpretación en tiempo de ejecución.
¿Cómo implementar la explicación de Lua? Si los principios de interpretación y ejecución de Lua son los mismos que los de C#, definitivamente no podrá interpretarse ni ejecutarse cuando se ejecute en la plataforma IOS. Lua es un lenguaje de programación escrito en C. El código escrito en Lua se lee durante el tiempo de ejecución y no se traduce a código de máquina al interpretar el código de bytes de Lua (las propias instrucciones de Lua).
En cambio, se explica en código C, por lo que no es necesario abrir un espacio de memoria especial y no se ejecutará ningún código nuevo. Ejecutamos una máquina virtual Lua y una máquina virtual escrita en C, que son completamente diferentes del mecanismo de C# porque Lua es un lenguaje de scripting basado en C.