Hangover un proyecto para lanzar aplicaciones de Windows en ARM64

Wine-Android-featured-image

Los desarrolladores del proyecto Wine Stefan Dösinger y André Hentschel han realizado el anuncio de la primera versión pública del emulador Hangover, que permite ejecutar aplicaciones de Windows de 32 y 64 bits diseñadas para arquitecturas x86 y x86_64 en entornos Linux y Android basados en la arquitectura ARM64 (Aarch64).

A diferencia de ejecutar Wine con un entorno de sistema mínimo usando QEMU en modo de emulación en el nivel de llamada del sistema (usando el mismo núcleo que el sistema principal).

Sobre el emulador Hangover

El proyecto Hangover permite al usuario poder tener un rendimiento significativamente mayor. La aceleración de este proyecto se logra a partir de transferir la capa de emulación al nivel de la API de Win32 / Win64, en lugar de emular las llamadas regulares del sistema con la emulación posterior de la API de Win32 / Win64 basada en ellas.
Actualmente, el proyecto le permite al usuario el poder ejecutar solo aplicaciones y juegos simples que utilizan las API de Win64 y Win32.

Para Linux, se ha implementado el soporte para Direct3D, que aún no está disponible para Android debido al soporte incompleto para OpenGL ES en Wine.

El soporte del depurador es inexistente y el manejo de excepciones tiene errores conocidos. Debido a estas razones, es probable que los sistemas de protección contra copia y anti-trampas estén en peor forma que en las versiones regulares de Wine.

En general, se puede esperar que las aplicaciones de 64 bits estén en mejor forma que las aplicaciones de 32 bits porque no es necesario realizar ningún tipo de estructura de datos.
Para garantizar el trabajo, se utiliza una instalación regular de Wine, complementada con varias bibliotecas y capas de DLL.
En un entorno Linux, las aplicaciones de Windows se ejecutan automáticamente cuando QEMU está en el directorio de Wine (“C:\ x86\ qemu-x86_64.exe.so”).

Mientras que, en Android, se propone utilizar la utilidad cmd para realizar la ejecución.
El espacio de direcciones está limitado a 4 GB al reservar cada dirección por debajo de 4 GB.

La mayoría de las bibliotecas principales de Wine se cargan anteriormente por encima de 4 GB para mantener el espacio anterior por debajo de 4 GB lo más libre posible. El inconveniente de esto es que iniciar un nuevo proceso lleva aproximadamente 2 segundos.

wine-4.0

Hangover un Wine para ARM64

Wine ve cada proceso como un proceso de 64 bits, por lo que su capa WoW64 no está activa. Esto funcionará bien para aplicaciones de 32 bits puros o de 64 bits puros, pero causará problemas para aplicaciones mixtas que esperan una distinción entre, por ejemplo, C:\windows\system32 y C: \windows\syswow64.

Con respecto al lanzamiento de las aplicaciones de Windows de 32 bits (x86), se procesan al nivel de traducción de las estructuras transmitidas entre la aplicación y Wine (el modelo LLP64 en Windows preserva la compatibilidad básica de las estructuras entre WinAPI de 32 y 64 bits).

Para ejecutar aplicaciones de Windows de 32 bits, se utilizan ensamblajes de Wine de 64 bits y cada proceso se trata antes como de 64 bits.

En el lado del host, solo se soportan las arquitecturas ARM64 y x86_64, pero el código está unificado, lo que permite trasladar el proyecto a otras arquitecturas en orden de bytes del más joven al más antiguo (little-endian) sin mucho esfuerzo.

Aun queda mucho por pulir

El rendimiento de Hangover de momento deja mucho que desear. Ya que el principal cuello de botella es el rendimiento del código que genera QEMU.

Sin embargo, cuando se ejecuta en un dispositivo de TV con Android Nvidia Shield. El rendimiento es suficiente para ejecutar juegos a partir de la década de 2000.

Las aplicaciones probadas en Hangover incluyen Notepad ++, ANNO 1602, Age of Wonders, Warhammer 40k: Dawn of War, The Settlers II 10th Anniversary, Prince of Persia 3D, Worms 2 y Worms Armageddon. Los ejemplos del DirectX 9 SDK también se ejecutan a velocidades aceptables.

El lanzamiento se basa en el código base Wine 4.0, que se refleja en el número de versión de Hangover 0.4.0 . La capa de emulación se basa en el proyecto QEMU.


Sé el primero en comentar

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.