elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  (Consulta) Intercambiador de variables en ensamblador (sintaxis de AT&T)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: (Consulta) Intercambiador de variables en ensamblador (sintaxis de AT&T)  (Leído 3,799 veces)
class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: (Consulta) Intercambiador de variables en ensamblador (sintaxis de AT&T)
« Respuesta #10 en: 16 Diciembre 2015, 00:51 »

He conseguido solucionar el problema!! La solución (en NASM) es esta:

Código
  1. segment .text
  2. global _change_values
  3.  
  4. _change_values:
  5. enter 0,0
  6. push ebx
  7.  
  8. mov edx, dword [ebp+8]
  9. mov ebx, dword [edx]     ; ebx = primer parámetro
  10. mov edx, dword [ebp+12]
  11. mov ecx, dword [edx]     ; ecx = segundo parámetro
  12.  
  13. ; mov dword [ebp+8], ecx   >> Intercambiador v1 NO FUNCIONA
  14. ; mov dword [ebp+12], ebx
  15.  
  16. mov edx, dword [ebp+8] ; Intercambiador v2
  17. mov [edx], ecx
  18. mov edx, dword [ebp+12]
  19. mov [edx], ebx
  20.  
  21. pop ebx
  22. leave
  23. ret
  24.  

Esto me plantea otra duda. ¿Por qué el intercambiador v1 no funciona? Sé que le intercambiador v2 si que debe funcionar perfectamente (de hecho, funciona :D), pero no entiendo porque en la primera versión que hice no puede funcionar...

Gracias por toda su ayuda!!

PD.: Sé que he puesto dword de sobra, pero aun quitándolos del intercambiador no funciona...



Aquí está la versión reducida (sinceramente, no sé si se puede optimizar más xD)

Código
  1. segment .text
  2. global _change_values
  3.  
  4. _change_values:
  5. enter 0,0
  6. push ebx
  7.  
  8. ; void intercambiar(int* valor_a, int* valor_b);
  9.  
  10. mov eax, dword [ebp+8]  ; eax = value_a
  11. mov ebx, dword [ebp+12] ; ebx = value_b
  12. mov ecx, [eax]          ; ecx = *value_a
  13. mov edx, [ebx]          ; edx = *value_b
  14. mov [eax], edx          ; *valor_a = edx >> *valor_a = *valor_b
  15. mov [ebx], ecx          ; *valor_b = ecx >> *valor_b = *valor_a
  16.  
  17. pop ebx
  18. leave
  19. ret
  20.  


« Última modificación: 16 Diciembre 2015, 01:38 por Eternal Idol » En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
fary
Colaborador
***
Desconectado Desconectado

Mensajes: 957



Ver Perfil WWW
Re: (Consulta) Intercambiador de variables en ensamblador (sintaxis de AT&T)
« Respuesta #11 en: 16 Diciembre 2015, 07:36 »

Porque tu lo que le pasas a la función es un puntero.  :P


En línea

Un byte a la izquierda.
class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: (Consulta) Intercambiador de variables en ensamblador (sintaxis de AT&T)
« Respuesta #12 en: 18 Diciembre 2015, 21:22 »

¡¡He caído dos veces en la misma trampa!! No me lo puedo creer... ¡QUE DURO ES APRENDER ASM! Pero es satisfactorio y útil :P
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
fary
Colaborador
***
Desconectado Desconectado

Mensajes: 957



Ver Perfil WWW
Re: (Consulta) Intercambiador de variables en ensamblador (sintaxis de AT&T)
« Respuesta #13 en: 19 Diciembre 2015, 17:07 »

Creo que no se puede resumir más...
En línea

Un byte a la izquierda.
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Consulta-php] Variables de formulario en array
PHP
hernanlp83 5 4,274 Último mensaje 29 Septiembre 2008, 23:12
por cassiani
Consulta: variables de entorno en el registro de windows.
Análisis y Diseño de Malware
denik 8 10,505 Último mensaje 5 Diciembre 2013, 22:51
por PASQ1985
Consulta con suma de variables.
ASM
Zinc 3 2,176 Último mensaje 11 Junio 2010, 22:49
por Eternal Idol
Error de sintaxis (falta operador) en la expresión de consulta 'amc.Id_Alumno =
.NET (C#, VB.NET, ASP)
Guillito 0 1,022 Último mensaje 14 Agosto 2015, 00:30
por Guillito
consulta sobre esta sintaxis..
Programación C/C++
digimikeh 3 1,031 Último mensaje 15 Septiembre 2020, 15:34
por MAFUS
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines