Diferencia entre revisiones de «Bomber»

De FdIwiki ELP
Saltar a: navegación, buscar
Línea 19: Línea 19:
 
|-
 
|-
 
|}
 
|}
 +
 +
La estrategia básica de los bomber es el uso de bombas de forma aleatoria con la esperanza de aplastar al programa oponente.
 +
 +
 +
 +
== Código de ejemplo: Dwarf ==
 +
 +
Dwarf es un guerro simple pero efectivo. Este programa instala bombas de DATs en zonas aleatorias del core mientras garantiza que no se autodestruya.
 +
 +
 +
      ADD #4, 3        ; execution begins here
 +
      MOV 2, @2
 +
      JMP -2
 +
      DAT #0, #0
 +
 +
El funcionamiento es sencillo. La primera instrucción añade al valor almacenado en el DAT de la última instrucción (4), mov copia el dat (bomba) en la posición indicada por el dat (la cual es aumentada en cada iteración por el add anterior), jmp permite que el programa vuelva a la instrucción add (y así repetir en un bucle). DAT es la bomba.
 +
 +
La seguridad (evitar su autodestrucción) se garantiza asegurando que en ningún momento del bucle la bomba afecte a su funcionamiento. Esto se garantiza con la siguiente instrucción:
 +
 +
;assert CORESIZE % 4 == 0
 +
 +
Al ser el Core divisible por 4 se garantiza que la bomba nunca caiga en las tres primeras instrucciones (add, mov, dat). En cada iteración, la cuenta aumenta en 4 por lo que la bomba siempre cae en la posición anterior al ADD y en la posición del DAT.

Revisión de 18:31 25 ene 2017

Dwarf
caption
Información general
Dwarf Core War Bomber

La estrategia básica de los bomber es el uso de bombas de forma aleatoria con la esperanza de aplastar al programa oponente.


Código de ejemplo: Dwarf

Dwarf es un guerro simple pero efectivo. Este programa instala bombas de DATs en zonas aleatorias del core mientras garantiza que no se autodestruya.


      ADD #4, 3        ; execution begins here
      MOV 2, @2
      JMP -2
      DAT #0, #0

El funcionamiento es sencillo. La primera instrucción añade al valor almacenado en el DAT de la última instrucción (4), mov copia el dat (bomba) en la posición indicada por el dat (la cual es aumentada en cada iteración por el add anterior), jmp permite que el programa vuelva a la instrucción add (y así repetir en un bucle). DAT es la bomba.

La seguridad (evitar su autodestrucción) se garantiza asegurando que en ningún momento del bucle la bomba afecte a su funcionamiento. Esto se garantiza con la siguiente instrucción:

assert CORESIZE % 4 == 0

Al ser el Core divisible por 4 se garantiza que la bomba nunca caiga en las tres primeras instrucciones (add, mov, dat). En cada iteración, la cuenta aumenta en 4 por lo que la bomba siempre cae en la posición anterior al ADD y en la posición del DAT.