In che modo il codice macchina generato dal runtime (come l'output di un JIT) viene effettivamente eseguito dalla CPU se la CPU / OS ha un bit di disabilitazione dell'esecuzione?
Per quanto ne so, molti processori e sistemi operativi moderni includono il supporto per un bit NX (inclusi Intel e ARM), che impedisce l' esecuzione del codice macchina archiviato a qualsiasi indirizzo diverso dalla sezione del codice di un file binario compilato. Chiaramente, questo è un bel vantaggio di sicurezza, perché impedisce attacchi di iniezione di codice shell.
Ma come fanno i motori JIT, come LLVM, che generano dinamicamente il codice macchina, a ovviare a questo?