DarwinBotsManual
Abrir la app EnglishEN

*

Lee la memoria en una dirección calculada: saca una dirección de la pila y apila lo que hay en esa celda.

Datos

Palabra
*
Familia
Básicos
Pila entera
saca 1, pone 1
Qué hace
Saca una dirección y apila lo que hay en esa celda. Fuera de 1 a 1000 se le saca el signo y se toma el resto de dividir por 1000; el 0 lee la 1000. Con la pila vacía lee la 1000.
Costo
Comando básico
Se ejecuta en
dentro de un gen: en la condición (cond) y en el cuerpo (start o else)

dirección * hace lo mismo que la lectura con asterisco pegado, pero con la dirección tomada de la pila: 60 * apila lo mismo que *60. La diferencia es que la dirección puede salir de una cuenta, y eso permite recorrer la memoria como si fuera una tabla.

Por ejemplo, los ojos .eye1 a .eye9 ocupan las celdas 501 a 509. Este bot guarda en la celda 50 qué ojo quiere mirar (del 1 al 9) y copia lo que ve ese ojo a la celda 60:

cond
start
  ' la dirección es 500 + el número de ojo
  500 *50 add * 60 store
stop

Como en cualquier lectura, la dirección pasa por la misma regla: se le saca el signo y se toma el resto de dividir por 1000, y un 0 lee la celda 1000 (0 * lee la 1000, 1050 * lee la 50). No hay forma de leer fuera de la memoria del bot.