En esta página, http://www.x86-64.org/pipermail/discuss/2004-August/005020.html Dijo que hay una manera de mezclar el código de 32 bits y el código de 64 bits en una aplicación. Supuso que la aplicación es de 32 bits (en modo compatibilidad) y luego cambia al modo de 64 bits para ejecutar el código de 64 bits y viceversa.¿Es posible ejecutar código de 32 bits en un proceso de 64 bits haciendo el cambio de modo?
Supongamos que mi sistema operativo es de 64 bits Linux y mi aplicación es de 64 bits. Hago un salto lejano para cambiar al modo de compatibilidad y ejecutar el código de 32 bits. ¿Funciona correctamente cuando hago una llamada al sistema o una llamada a una función?
¿Hay alguna sobrecarga de modo de conmutación entre el modo de compatibilidad y el modo de 64 bits? Creo que uno de los gastos generales es que necesito una pila separada para 32 bits y 64 bits.
¿Podría integrar esta idea en JVM, quizás pueda generar código de 32 bits dinámico en JVM de 64 bits y ejecutarlo mediante el cambio de modo?
Si está utilizando una JVM de 64 bits, ¿por qué desea generar código de 32 bits? Puede hacer todas las operaciones de 32 bits que desee (casi) en código de 64 bits; la mayoría de las instrucciones son predeterminadas para los operandos de 32 bits incluso en el modo de 64 bits. –
Porque quiero comparar la diferencia entre el código de 32 bits y el código de 64 bits. Tal vez pueda obtener la diferencia en algún caso, como el tamaño del tipo largo, o el tiempo de ejecución para cada caso. –
Lee de nuevo la publicación, sugiere modificar la CS: esto invocaría 'ld.so' personalizado y cosas así. Asegúrate de estar preparado para eso. –