¿Cómo es el código de máquina generado en tiempo de ejecución (como la salida de un JIT), realmente ejecutado por la CPU si la CPU / OS tiene un bit de desactivación de ejecución?
Hasta donde yo sé, muchos procesadores y sistemas operativos modernos incluyen soporte para un bit NX (incluyendo Intel y ARM), que evita que se ejecute el código de máquina que se almacena en cualquier dirección que no sea la sección de código de un binario compilado. Claramente, esta es una buena ventaja de seguridad, ya que evita los ataques de inyección de código shell.
Pero, ¿cómo pueden evitar esto los motores JIT, como LLVM, que generan dinámicamente código máquina?