Los emojis pueden ser ejecutables, siempre que se lean como código máquina de un Intel 8088 u 8086. El programador conocido como GloriousCow lo mostró en una entrada de su blog, donde arma programas completos usando solo emojis, informó Hackaday el 6 de noviembre.
Todo partió de una casualidad. GloriousCow notó que el emoji de la cabra se codifica en UTF-8 con los bytes F0 9F 90 90. Quien haya escrito ensamblador x86 reconoce 90h como nop, la instrucción nula que gasta un ciclo sin hacer nada. Los otros dos bytes, F0 y 9F, forman juntos lock lahf, que activa la señal de bloqueo del bus y copia algunas banderas de estado al registro AH. En un 8088 o un 8086 eso, en la práctica, tampoco hace nada.
O sea que la cabra (F0 9F 90 90) es código máquina válido al 100%. No hace nada útil, y ahí empieza lo interesante.
¿Se puede escribir un programa útil solo con emojis?
Hay muchísimos emojis, y buena parte empieza con F0 9F seguido de otros dos bytes. Varias de esas combinaciones de dos bytes también son instrucciones válidas del 8086. La pregunta era si alcanzaban para armar un ejecutable con sentido, y la respuesta es sí. GloriousCow escribió un Hola Mundo para demostrarlo.
El procedimiento es corto. Se guarda la cadena de emojis en un archivo, se le pone la extensión .com y se ejecuta en DOSBox con el tipo de CPU configurado como 8086. El programa imprime HELLO en la esquina inferior derecha de la pantalla, escribiendo directo en la memoria de video.
Lo que trae el blog original
La entrada de GloriousCow trae bastante más detalle, con recursos y consejos para que cada uno escriba sus propios ejecutables con emojis. También incluye una demo para VGA mucho más elaborada, hecha igual con emojis.
El truco ya existía con caracteres ASCII
Con caracteres ASCII se puede hacer algo parecido, y con más libertad, porque cada carácter es un solo byte y no una combinación de cuatro como los emojis. Ese recurso se usó en programas de BASIC para esconder código máquina dentro de sentencias como REM. El resultado era un listado de aspecto raro que hacía en BASIC cosas que el lenguaje no debería permitir.





