A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Core War A Batalha do Núcleo.

Apresentações semelhantes


Apresentação em tema: "Core War A Batalha do Núcleo."— Transcrição da apresentação:

1 Core War A Batalha do Núcleo

2 O que é o Core War ? É um jogo de programação onde programas em assembler tentam destruir-se na memória de um computador simulado Os programas (os guerreiros) são escritos numa linguagem especial chamada Redcode, e são executados num programa chamado MARS (Memory Array Redcode Simulator)

3 Simplificação Ambos, o Redcode e o MARS são simplificações abstractas comparadas com os sistemas computacionais normais.

4 Como Funciona? O Core (a memória do computador simulado) é uma cadeia de instruções, vazias excepto nos registos que guardam as instruções dos programas que estão em combate. A memória dobra-se (a boca morde a cauda), um donut. Não existem endereços absolutos. O endereço 0 não se refere ao primeiro endereço da memória mas antes à própria instrução que contém esse endereço. A instrução seguinte é 1 e a anterior é -1

5 Uma Instrução RedCode, a unidade do Core
A unidade básica da memória é uma instrução e não um byte como é normal. todas ocupam uma célula de memória e demoram o mesmo tempo a serem executadas (1 ciclo).

6 Estrutura de uma Instrução
Cada instrução Redcode divide-se num código de instrução (opcode) e dois campos numéricos (A:endereço fonte e B:endereço destino) Uma instrução só pode ser copiada e testada quanto à igualdade.

7 Exemplos de códigos de instrução
DAT: Remove o processo corrente da fila de processos MOV: Copia dados de uma instrução para outra JMP: Faz com que a execução do programa continue no endereço especificado. ADD: Adiciona o valor fonte para o destino. SEQ: Compara duas instruções, e salta por cima da próxima instrução se forem iguais.

8 Modos de Endereçamento
#: Imediato $: Directo (pode ser omitido) *: Campo-A indirecto @: Campo-B indirecto.

9 Controlo dos Programas
O MARS executa uma instrução de cada vez e passa para a seguinte, a não ser que a instrução indique explicitamente para saltar para outro endereço. Num combate, em que há mais do que 1 programa na arena, os programas são executados alternadamente, uma instrução de cada vez.

10 Multitarefas Cada guerreiro tem a sua própria fila de processos, a lista de processos que serão executados repetidamente pela ordem que começaram. Cada Guerreiro começa apenas com um só processo. O tamanho da fila de processos é limitado

11 Multitarefas Os processos de cada programa são executados de forma alternada. O tempo de execução de cada processo é inversamente proporcional ao número de processos activos do respectivo guerreiro

12 Morte dos Processo e Derrota
Um processo morre quando executa uma instrução DAT (ou executa uma divisão por 0) Um programa morre quando todos os seus processos desaparecerem.

13 WAIT JMP 0 O Wait é o programa mais simples
O seu tamanho mínimo torna-o difícil de ser detectado. Não possui ataque. Só vence se o seu inimigo se autodestruir.

14 IMP MOV #0, 1 Foi o primeiro guerreiro a ser criado (Dewdney)
O seu tamanho mínimo torna-o difícil de ser detectado. Está sempre em movimento no core, em ciclo, ad infinitum. Não mata, se atingir o adversário, transforma-o noutro Imp. Gosta de empatar e só vence se o inimigo se autodestruir.

15 DWARF ADD #4, 3 MOV 2, @2 JMP -2 DAT #0, #0
O Dwarf (Dewdney) é um bombardeiro que cegamente copia uma “bomba” para lugares com intervalos regulares entre si (de 4 em 4 células, por exemplo), esperando acertar no alvo. A bomba é uma instrução DAT que se acertar no código do seu inimigo será letal caso essa instrução venha a ser executada. Neste caso, é necessário ter cuidado pois a bomba pode acertar no próprio Dwarf. É necessário que a memória tenha um número de células que seja múltiplo de 4.


Carregar ppt "Core War A Batalha do Núcleo."

Apresentações semelhantes


Anúncios Google