Carregar apresentação
A apresentação está carregando. Por favor, espere
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.
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.