Autor
|
Tema: Sobre paso de parámetros y retorno de funciones (Leído 3,942 veces)
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Hola ¿Qué veis mejor? ¿Pasar parámetros a funciones en la pila, o en registros? Yo veo más sencillo pasar parámetros con un registro, así asegurarse de que la pila no cambia. Pero no se que es lo más "normal". Por ejemplo, ¿al pasar parámetros a funciones con la pila, esas funciones van a leer la pila y dejarla como está, o van a quitar los valores de la pila? Algunas dudillas que me quedaron al programar ASM xD
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Para depurar la pila sin duda, cuando se usan registros cada funcion los va sobreescribiendo y analizar un dump es doloroso.
Lo normal hoy en dia es usar registros, es la convencion de llamada stdcall en x64 y (el Kernel) Linux tambien usa registros. Igual son limitados, al final terminas usando la pila ...
Eso depende de la convencion de llamada, la de C limpia la pila el llamador despues de llamar, en stdcall el llamado pero eso se hace justo al retornar con retn (no es que se quiten los valores, simplemente se ajusta el puntero ESP). Ambas casos los podes analizar creando un sencillo programa en C que llame a la API de Windows y a printf por ejemplo.
|
|
« Última modificación: 12 Agosto 2014, 17:34 pm por Eternal Idol »
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
xv0
Desconectado
Mensajes: 1.027
|
¿Qué veis mejor? ¿Pasar parámetros a funciones en la pila, o en registros? Veo mejor usar registros, a eso se le llama sistema "fastcall". El motivo ya lo dice el nombre, trabajar con los registros es mejor que con la pila. Por ejemplo, ¿al pasar parámetros a funciones con la pila, esas funciones van a leer la pila y dejarla como está, o van a quitar los valores de la pila? Si haces un disassembler veras que cargan directamente los valores en la pila, luego la funcion llamada los lee, normalmente suelen limpiarla o dejarla como antes, pero pierdes optimizacion, por eso es mejor usar registros, desde este punto de vista. Un saludo.
|
|
|
En línea
|
|
|
|
daryo
|
preguntas por curiosidad o por un caso en especifico? ¿Qué veis mejor? ¿Pasar parámetros a funciones en la pila, o en registros? pues como todo depende pero por ejemplo la api de windows usa la pila si vas a hacer un messagebox harias: push ultimoparametro push penultimo push mensaje push primero call messagebox
¿al pasar parámetros a funciones con la pila, esas funciones van a leer la pila y dejarla como está, o van a quitar los valores de la pila? cuando lees un valor de la pila con pop
lo estas sacando. imagina la pila como poner objetos uno encima de otro el primero que sacas es el ultimo que pusiste
|
|
|
En línea
|
buenas
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
cuando lees un valor de la pila con pop
lo estas sacando. imagina la pila como poner objetos uno encima de otro el primero que sacas es el ultimo que pusiste Recuerda que también se puede leer la pila sin POP. Gracias por las respuestas Estaba yo haciendome una librería, y no sabía si dejar el tema de llamadas con registros, o cambiarlo a la pila. Pero la verdad, los registros me parecen más sencillos jaja
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Gracias por las respuestas Estaba yo haciendome una librería, y no sabía si dejar el tema de llamadas con registros, o cambiarlo a la pila. Pero la verdad, los registros me parecen más sencillos jaja Si, pero ojo que los registros son finitos y si las funciones tienen muchos parametros tenes que recurrir a la pila igual; sino usa punteros a estructuras para pasar los parametros ... que normalmente terminan siendo variables locales en la pila tambien
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Paso de parametros por referencia...funciones
Programación C/C++
|
soser
|
2
|
4,516
|
2 Septiembre 2010, 22:33 pm
por soser
|
|
|
Paso de parámetros a funciones en C
Programación C/C++
|
LoQueSeaPI
|
1
|
2,302
|
16 Septiembre 2016, 04:49 am
por crack81
|
|
|
Paso de funciones a otras funciones
Programación C/C++
|
eaz95
|
1
|
2,379
|
18 Julio 2017, 11:59 am
por ivancea96
|
|
|
Ayuda funciones con retorno de valor en C
Programación C/C++
|
omegadei
|
2
|
1,830
|
21 Marzo 2018, 20:04 pm
por omegadei
|
|
|
Consulta sobre retorno en las funciones
Programación C/C++
|
NicoSanhueza
|
3
|
2,534
|
26 Junio 2018, 17:49 pm
por ThunderCls
|
|