la pila

Páginas: 12 (2898 palabras) Publicado: 19 de noviembre de 2014
LA PILA

La pila es un lugar de la memoria donde se van guardando determinados valores para recuperarlos posteriormente. Por esta razón, cuando se introduce un nuevo valor no se hace en el lugar ocupado por el valor introducido anteriormente, sino que se pone justo en la posición o posiciones inmediatamente anteriores a la ocupada por ese valor previo.

La pila sigue la norma LIFO (lastin, first out) y funciona como una pila de platos. Si colocamos uno a uno cinco platos sobre una pila, y luego los vamos cogiendo, tomaremos en primer lugar el último que hayamos puesto, luego el penúltimo etc., hasta llegar al que hayamos puesto en primer lugar, que será el último que cogeremos. La dirección para acceder al plato superior de la pila, es decir al valor en que podemos acceder encada momento, está contenida en un registro (ESP) y, lógicamente, va variando según se van añadiendo o retirando valores.

Hay diferentes maneras de modificar el estado de la pila: directamente, mediante las instrucciones que se emplean para poner o quitar valores, o mediante instrucciones que tienen el efecto de modificarla, como la instrucción call (llamada a subrutina) que tiene como efectosecundario el guardar en la pila la dirección a la que ha de volver el programa cuando, una vez terminada la ejecución de la subrutina, se encuentra con la instrucción ret, la cual retira la dirección introducida de la pila, dejándola como estaba antes de la ejecución de la subrutina.

La finalidad principal de la pila es liberar registros de forma temporal para que puedan realizar otrasfunciones para luego, una vez terminadas las mismas, reintegrarles su valor primitivo. Otra utilidad puede ser la que a veces emplean programadores temerosos de que los chicos malos puedan robarles sus tesoros ;-) y es la de saltar de un punto a otro durante la ejecución de un programa sin que esto quede reflejado en el desensamblado de dicho programa:

push 41456A
...
ret

Esto quiere decirque el programa, al encontrar la instrucción ret, saltará a la dirección contenida en la pila, es decir 41456A, creyendo regresar de una subrutina. Pero esto, si la instrucción push está puesta de manera que se confunda entre otras, sólo se puede ver durante la ejecución del programa. Desde luego, hay gente mala :´-(


6. LOS REGISTROS

Los registros son elementos de almacenamiento de datoscontenidos en el procesador y que tienen la ventaja de la rapidez de acceso y la finalidad de contener datos necesarios para la ejecución del programa. En principio, casi todos ellos pueden utilizarse libremente, pero cada uno de ellos tiene sus funciones específicas. Existen distintos tipos de registro:


6.1. Generales Son cuatro: EAX, EBX, ECX y EDX.

El registro EAX (Acumulador) ademásde su empleo como registro para uso general, es utilizado en algunas instrucciones como las de multiplicar y dividir, que como veremos más adelante lo utilizan como factor y como resultado. También se utiliza para contener el valor de retorno después de la ejecución de una API, por ejemplo, al regreso de lstrlen, EAX contiene la longitud de la cadena de texto examinada, y al regreso deRegQueryValueExA, EAX estará puesto a cero si el registro se ha leído correctamente.

El registro EBX (Base) además de su uso general, suele utilizarse para direccionar el acceso a datos situados en la memoria.

El registro ECX (Contador) además de su uso general, se utiliza como contador en determinadas instrucciones, como por ejemplo:

mov ecx, 00000010h
repnz
movsb

Estas instruccionescopiarían 16 bytes de una dirección a otra de la memoria (Más adelante veremos como lo hace). Veamos otro ejemplo:

mov ecx, 00000005
00043A2C ....
loop 00043A2C

Se ejecutaría 5 veces un bucle.

El registro EDX (Datos) además de su uso general, se utiliza junto con EAX para formar números mayores de 32 bits en algunas instrucciones, como las de multiplicar y dividir. También se utiliza en...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Las pilas
  • pila
  • pilas
  • pilas
  • las pilas
  • Pilas
  • Pilo
  • Pilar

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS