¿Qué es Corewars, RedCode?


CoreWars Es un tipo de juego: todos desarrollan programas, luego luchan entre sí (con el objetivo de "terminar" el programa del oponente).

Este juego fue inventado en las universidades estadounidenses. Es un ejercicio de programación que fue altamente alentado por los maestros. Eso es probablemente lo que inventaron los primeros programadores de virus, pero Corewars sigue siendo un ejercicio de programación muy interesante, instructivo, pacífico, divertido e inofensivo.

¡Pero es peligroso!

De ninguna manera.

Los programas de Corewars están escritos en un tipo de lenguaje ensamblador llamado Código rojo.

Estos programas se ejecutan en una máquina virtual (esta es una computadora ficticia simulada por un programa).

El microprocesador de su computadora (Pentium u otro) no comprende el lenguaje informático RedCode. Entonces los programas RedCode no pueden, bajo ninguna circunstancia, se ejecuta directamente en su procesador y tampoco puede "escapar".

RedCode, el lenguaje de programación

RedCode es un lenguaje ensamblador (no debe confundirse, ¡es un virus!)

Hay varias versiones del lenguaje RedCode, pero las instrucciones son muy similares a cualquier lenguaje ensamblador (copiar, agregar, multiplicar, comparar, omitir, etc.).

Hay 2 programas RedCode: fuente de ensamblaje o código de máquina.

Cuales son las reglas?

  • En general, el espacio de memoria es muy pequeño (de 1024 a 8192 celdas).
  • Cada celda puede contener un instruccióno uno dado.
  • Al comienzo del juego, cada programa se coloca aleatoriamente en esta memoria.

Los programas no conocen la posición del oponente. El resto de la memoria está llena de datos.

  • Inicialmente, todos los ptogramas tienen un puntero de instrucciones
  • Todos los programas pueden escribir instrucciones o datos en cualquier lugar de la memoria.
  • Cada programa tiene el derecho de crear tantos punteros de instrucción adicionales (fork) como desee (pero debería duplicar la memoria): es exactamente lo mismo que la multitarea.
  • Todos los programas tienen derecho a una vuelta del reloj cada vez.
  • Si un programa tiene múltiples punteros de instrucción, sus giros de reloj se dividirán entre ellos (consecuencia: si un programa "se bifurca" demasiado, será más lento).
  • Cuando un puntero de instrucción llega a los datos, muere.
  • Cuando un programa ya no tiene ningún puntero de instrucción en vivo, se pierde.

El objetivo es detener todos los procesos del programa del oponente. Hay muchas tácticas diferentes.

Ejemplo!

El programa de combate más simple es el MOV 0.1 , que significa: "copie lo que está en la celda de memoria actual (0) en la siguiente celda de memoria (1) ital>.". Esto copiará la instrucción MOV 0.1 en la siguiente celda de memoria. Después de ejecutar la instrucción, el puntero del programa salta a la siguiente celda (¡que solo contiene el MOV 0.1 que acabamos de copiar!).

Por lo tanto, este programa avanza de una célula a otra en la memoria, destruyendo todo a su paso y emprendiendo los procesos del adversario con él.

Este es el programa más simple, pero es difícil matarlo.

Cual es el interes

Si no conoce el lenguaje ensamblador, ¡esta es la oportunidad de aprenderlo! Hay pequeños programas en RedCode que son fáciles de entender.

Si ya conoces el lenguaje ensamblador, verás lo bueno que es encontrar optimizaciones para buscar a tu oponente más rápido, bombardearlo o descubrir tácticas para bloquear (¡o vampirizar!) Tus procesos y robarle los votos de su reloj.

¿Serías capaz de vencer a los programas más poderosos? Atención: ¡los más grandes o los más complejos no son necesariamente los más peligrosos! Debes encontrar tácticas efectivas.

Artículo original publicado por sebsauvage

Responder

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para «permitir cookies» y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en «Aceptar» estarás dando tu consentimiento a esto.

Cerrar