Apple Worm es un programa informático escrito por Apple Computer , y especialmente para el microprocesador 6502 , que realiza una reubicación dinámica . El código fuente de Apple Worm es el primer programa impreso en su totalidad en Scientific American . [1] Apple Worm fue diseñado y desarrollado por James R. Hauser y William R. Buckley. Otros programas Apple Worm de ejemplo se describen en la historia de portada de la edición de noviembre de 1986 de Call_A.PPLE Magazine. [2]
Dado que el gusano Apple realiza una reubicación dinámica dentro de la memoria principal de una computadora, no constituye un virus informático , una descripción adecuada aunque un tanto inexacta. Aunque el comportamiento análogo de copiar código entre memorias es exactamente el acto realizado por un virus informático, el virus tiene otras características que no están presentes en el gusano. Estos programas no necesariamente causan daños colaterales a los sistemas informáticos en los que se ejecutan sus instrucciones; no hay dependencia de un vector para asegurar la ejecución posterior. Esto se extiende al virus informático; no necesita ser destructivo para efectuar su comunicación entre entornos computacionales.
Un programa informático típico manipula datos externos a la representación corpórea del programa informático. En el lenguaje de los programadores, esto significa que los espacios de código y datos se mantienen separados. Los programas que manipulan datos internos a su representación corpórea, como los que se encuentran en el espacio de código, son autorrelacionales; al menos en parte, su función es mantener su función. En este sentido, un autorreubicador dinámico es un sistema autorreferencial, según la definición de Douglas R. Hofstadter . [3]
El conjunto de instrucciones de la computadora PDP-11 incluye una instrucción para mover datos, que cuando se construye en una forma particular hace que se muevan de direcciones superiores a direcciones inferiores; la forma incluye un decremento automático del registro del puntero de instrucción. Por lo tanto, cuando esta instrucción incluye un decremento automático del puntero de instrucción, se comporta como un autorreubicador dinámico.
Un ejemplo más actual de un programa auto-reubicable es una adaptación del Apple Worm para el microprocesador Intel 80x86 y sus derivados, como el Pentium y los microprocesadores AMD correspondientes . [4]