Como o código de máquina gerado em tempo de execução (como a saída de um JIT) é realmente executado pela CPU se a CPU / OS possui um bit de Desativação de Execução?
Tanto quanto eu sei, muitos processadores modernos e sistemas operacionais incluem suporte para uma NX bit, (incluindo Intel e ARM), que impede a máquina de código que é armazenada em qualquer endereço outro do que a seção do código de um binário compilado de ser executado. Claramente, essa é uma boa vantagem de segurança, porque evita ataques de injeção de código de shell.
Mas como os mecanismos JIT, como o LLVM, que geram código de máquina dinamicamente, resolvem isso?