Stack y variables Locales.

Foro dedicado a PCs modernos. Desde Pentium 4 en adelante
Avatar de Usuario
mentalthink
Amiga 2500
Amiga 2500
Mensajes: 2840
Registrado: 11 Abr 2010, 15:06
Gracias dadas: 45 veces
Gracias recibidas: 14 veces

Stack y variables Locales.

Mensajepor mentalthink » 01 May 2019, 12:20

Quería haceros un par de preguntas a ver si me despejáis un poco el "temporal".

Hablo de C++, aunque supongo que en cualquier otro lenguaje sera más o menos igual excepto si las variables se meten en los registros (que no se cuando pasa), supongo que será ASM o depende de la CPU.

Si por ejemplo hago una variable local en una función:

int Suma(int A , int B){
int temp = a+ b;
return temp;}

Los parametros (A y B) y la variable temp, estarán siempre en la misma posición de memoria?¿, o sea estarán en el el Stack, pero si las volvierá a llamar en otra ejecución del programa estarían en el mismo sitio(Dirección del Stack).

Por otro lado de que depende y quien decide el tamaño del Stack (Es el S.O)?¿, es igual para todos los programas?¿ varia el tamaño dependiendo el programa, o es siempre una porción de tamaño fijo?¿. Físicamente dónde está, dentro de la CPU, en la RAM(no creo porque si no el acceso no sería más rápido que en el HEAP).

Gracias. :jumper: :popcorn:

Avatar de Usuario
zup
Amiga 2500
Amiga 2500
Mensajes: 2728
Registrado: 04 Sep 2009, 20:07
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo DS/3DS
Primera consola: Nintendo GameBoy
Ubicación: Navarra
Gracias dadas: 49 veces
Gracias recibidas: 210 veces
Contactar:

Re: Stack y variables Locales.

Mensajepor zup » 01 May 2019, 12:38

No, la posición variará dentro del área del stack. La posición exacta va en función de SP (por ejemplo, SP+2), pero no tienes garantías de que el valor de SP siempre sea el mismo al llamar a la función.

El tamaño del stack lo define el programador, si no lo defines el compilador asigna uno por defecto (salvo en ensamblador, que lo tienes que definir explícitamente). Y el stack va en la RAM, por lo que (en casi todos los sistemas) va a ser el sistema operativo el que defina su posición.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Además vendo cosas!

Avatar de Usuario
mentalthink
Amiga 2500
Amiga 2500
Mensajes: 2840
Registrado: 11 Abr 2010, 15:06
Gracias dadas: 45 veces
Gracias recibidas: 14 veces

Re: Stack y variables Locales.

Mensajepor mentalthink » 01 May 2019, 12:57

Gracias zup, súper intersante todo lo que me has respondido.
Gracias!!!


Volver a “PC Moderno”

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 4 invitados