O que é Corewars, RedCode ?

Setembro 2017

CoreWars é um tipo de jogo: Todo mundo desenvolve programas, depois, eles lutam entre si (com o objetivo de "acabar" com o programa do adversário).

Este jogo foi inventado em universidades americanas. É um exercício de programação que foi altamente incentivado pelos professores. É, provavelmente, o que deu a ideia para os primeiros programadores de vírus, mas Corewars continua sendo um exercício de programação bastante interessante, instrutivo, pacífico, divertido e inofensivo.

Mas é perigoso !


De jeito nenhum.

Os programas Corewars são escritos em uma espécie de linguagem de montagem (Assembly) chamada RedCode.

Estes programas funcionam em uma máquina virtual (este é um computador fictício simulados por um programa).

O microprocessador do seu computador (Pentium ou outro) não entende a linguagem de computador RedCode. Então, os programas RedCode não podem, em caso algum, ser executado diretamente em seu processador e também não podem "escapar".

RedCode, a languagem de programação


RedCode é uma linguagem de montagem (A não confundir com Code Red, que é um vírus !)
Existem várias versões da linguagem RedCode, mas as instruções são muito semelhantes a qualquer linguagem de montagem (copiar, adicionar, multiplicar, comparar, pular, etc).
Existem programas RedCode de 2 formas: fonte assembly (de montagem) ou código de máquina.

Quais são as regras ?

  • Em geral, o espaço da memória é bem pequeno (de 1024 a 8192 células).
  • Cada célula pode conter ou uma instrução, ou um dado.
  • No início do jogo, cada programa é colocado aleatoriamente nesta memória.

Os programas não conhecem a posição do adversário. O resto da memória está cheia de dados.
  • Inicialmente, todos os ptogramas teem um ponteiro de instrução
  • Todos os programas podem escrever instruções ou dados em qualquer lugar da memória.
  • Cada programa tem o direito de criar tantos ponteiros de instrução adicionais (fork) quiser (mas é ele que deverá duplicar a memória): É exatamente igual ao multi-tarefas.
  • Todos os programas teem direito a uma volta do relógio, a cada vez.
  • Se um programa tem diversos ponteiros de instrução, suas voltas de relógio serão divididas entre eles (consequência: se um programa de "forkar" (criar diversos ponteiros de instrução adicionais) muito, ele será mais lento).
  • Quando um ponteiro de instrução chega nos dados, ele morre..
  • Quando um programa não tem mais nenhum ponteiro de instrução vivo, ele perdeu.


O objetivo é travar todos os processos do programa do adversário. Há muitas táticas diferentes.

Exemplo !


O programa de combate mais simples é o MOV 0,1 , que significa: " <ital>copie o que está na célula de memória atual (0), na seguinte célula de memória (1) </ ital>.". Isto copiará a instrução MOV 0,1 na célula de memória seguinte. Depois de executar a instrução, o ponteiro do programa pula para a célula seguinte (que justamente contém o MOV 0,1 que acabamos de copiar!).

Assim, este programa avança, de célula em célula, na memória, destruindo tudo em seu caminho e embarcando os processos do adversário com ele.

Este é o programa mais simples, mas é difícil de matá-lo.

Qual é o interesse ?


Se você não conhece a linguagem de montagem, esta é a oportunidade para aprendê-la! Existem programas minúsculos em RedCode fáceis de entender.

Se você já conhece a linguagem de montagem, você verá como é gostoso encontrar otimizações para buscar o adversário mais rapidamente, bombardeá-lo ou descobrir táticas para bloquear (ou vampirizar!) os seus processos e roubar-lhe votas de relógio.

Você seria capaz de derrotar os programas mais poderosos? Atenção: os maiores ou os mais complexos não são, obrigatoriamente, os mais perigosos! Você deverá encontrar táticas eficazes.

Artigo original publicado por sebsauvage

Tradução feita por Lucia Maurity y Nouira


Veja também

Publicado por pintuda. Última modificação: 24 de abril de 2012 às 11:57 por pintuda.
Este documento, intitulado 'O que é Corewars, RedCode ?', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.