accede a la pila la misma velocidad que acceder a la memoria?
Por ejemplo, podría elegir hacer algún trabajo dentro de la pila, o podría trabajar directamente con una ubicación etiquetada en la memoria.
Entonces, específicamente: ¿es push ax
la misma velocidad que mov [bx], ax
? ¿Igual es pop ax
la misma velocidad que mov ax, [bx]
? (BX asumir cuenta con una ubicación en la memoria near
.)
La motivación para la pregunta:
Es común en C para desalentar funciones triviales que tienen parámetros.
Siempre he pensado que esto se debe a que los parámetros se insertan en la pila y luego se eliminan de la pila una vez que la función retorna, pero también porque la llamada de función debe preservar el contexto de la CPU, lo que significa uso.
Pero suponiendo que uno conoce la respuesta a la pregunta principal, debería ser posible cuantificar la sobrecarga que la función utiliza para establecerse (pulsar/abrir/preservar contexto, etc.) en términos de un número equivalente de directo accesos de memoria. De ahí la pregunta principal.
( Editar: Aclaración:
near
utilizado anteriormente es en contraposición a
far
en la arquitectura x86
segmented memory model de 16 bits.)
Wow. Soy un explorador Acabo de encontrar una buena pregunta que no sea n00b en StackOverflow. ¡Celebrando mi exploración con champán y un voto popular! –
Siempre consideré las operaciones de incremento/decremento de llamadas push/pop en ESP como una sobrecarga en comparación con mov .... pero creo que debería haber mucho más. – loxxy