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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  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 7,526 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 am »

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 am por Eternal Idol » En línea

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


Desconectado Desconectado

Mensajes: 1.076



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

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 pm »

¡¡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


Desconectado Desconectado

Mensajes: 1.076



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

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 5,442 Último mensaje 29 Septiembre 2008, 23:12 pm
por cassiani
Consulta con suma de variables.
ASM
Zinc 3 3,872 Último mensaje 11 Junio 2010, 22:49 pm
por Eternal Idol
Error de sintaxis (falta operador) en la expresión de consulta 'amc.Id_Alumno =
.NET (C#, VB.NET, ASP)
Guillito 0 2,430 Último mensaje 14 Agosto 2015, 00:30 am
por Guillito
consulta sobre esta sintaxis..
Programación C/C++
digimikeh 3 6,719 Último mensaje 15 Septiembre 2020, 15:34 pm
por MAFUS
¿A que se debe la sintaxis de ensamblador de at&t?
Programación General
4v1dy4 3 3,256 Último mensaje 18 Enero 2023, 23:00 pm
por 4v1dy4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines