Título: problema con la definicion de la variable Publicado por: robertofd1995 en 8 Mayo 2014, 23:03 pm hola a todos , estoy una funcion en asm , es la primera vez que hago algo a este nivel
el metodo lo que tiene que hacer es que dados 4 valores me diga la distancia al objetivo en c++ seria asi: Código: int distanceShipBomb(int xShip, int yShip, int xBomb, int yBomb){ el problema esta al pasarlo a asemblador , ya hice lo de extern "C" int distanceShipBomb(int xShip, int yShip, int xBomb, int yBomb); y cree el archivo bien y eso el codigo en asemlador que tengo es este : Código:
el error que me marca una y otra vez es este Código: 1>------ Operación Compilar iniciada: proyecto: TeamWrok-Winter-2014, configuración: Debug Win32 ------ os agradeceria un monton que me pudieseis ayudar con el problema, llevo peleando con el toda la tarde y no he sido capaz Un saludo y gracias Título: Re: problema con la definicion de la variable Publicado por: x64core en 9 Mayo 2014, 11:23 am ¿Incorrecto nombramiento de los registros? ( esb, eox, ESB, etc )
Título: Re: problema con la definicion de la variable Publicado por: Eternal Idol en 9 Mayo 2014, 11:53 am Ademas: ¿inc ESB+ 5? inc solo incrementa en 1 (es ++ de C/C++), tenes que usar add para sumar 5.
Título: Re: problema con la definicion de la variable Publicado por: robertofd1995 en 9 Mayo 2014, 13:30 pm ¿Incorrecto nombramiento de los registros? ( esb, eox, ESB, etc ) si perdon se me olvido modificarlo para que todos se llamasen igual ,lo acabo de modificar ahora pero la pregunta esta en que si todos se llaman igual , porque me siguen saltando las alertas ? es decir como tengo que llamar a los registros etc... , un saludo y muchas gracias Título: Re: problema con la definicion de la variable Publicado por: Eternal Idol en 9 Mayo 2014, 13:37 pm ebp existe, esb no, eox no existe tampoco ...
http://en.wikipedia.org/wiki/X86#x86_registers ¿De donde estas sacando este codigo? Título: Re: problema con la definicion de la variable Publicado por: x64core en 9 Mayo 2014, 15:13 pm si perdon se me olvido modificarlo para que todos se llamasen igual ,lo acabo de modificar ahora No es que todos los registros se deben llamar de la misma manera. Lo Mejor sera aprender a programar en ASM leyendo algún buen libro.pero la pregunta esta en que si todos se llaman igual , porque me siguen saltando las alertas ? es decir como tengo que llamar a los registros etc... , un saludo y muchas gracias Título: Re: problema con la definicion de la variable Publicado por: robertofd1995 en 9 Mayo 2014, 15:42 pm a ver os explico , tengo una asignatura en la uni en la que damos algo de asm , el caso es que para empezar (no vamos a dar asm , en el resto de la carrera , simplemente es para entender como se podria hacer y eso) usabamos un ordenador teorico que ellos habian construido , es decir para un procesador teorico que ellos habian creado
para estudiar y el examen practico y demas lo hicimos para esa arquitectura , el problema es que nos mandaron al final un trabajo para arquitectura 86-32 y no nos dieron tablas de equivalencia ni nada y fue un follon por ej el nombre de los registros en el computador teorico eran r1 ,r2 ,..r6 y r7 que era el puntero la resta era sub r1,r2,r3 siendo r1 el registro donde lo guardabas , etc... vaya que cambiaban un monton de cosas y no nos informaron bien pero bueno me puse a buscar por internet como se tenian que llamar los registros etc.. y ya se como funciona y ya me funciona el proyecto gracias de todas maneras , aunque hay una pequeña cosa que me paso y no se a que se debe que diferencia hay entre esto Código:
y esto : Código:
con el primer code me funciona, con el segundo no y no entiendo el porque porque en el if , no toco el registro del otro valor asi que no se a que debe un saludo y gracias por la ayuda Título: Re: problema con la definicion de la variable Publicado por: x64core en 9 Mayo 2014, 15:53 pm Pues si te fijas la unica diferencia entre el primer código y el segundo son dos linea nada más o más bien
el cambio de posición de la instruccion en la linea 9 del primer código en el segundo código además también podes depurar el código sino ya sabras tu como va eso en el procesador emulado o teorico como sea. Título: Re: problema con la definicion de la variable Publicado por: robertofd1995 en 11 Mayo 2014, 00:47 am ya se que solo cambia la poscion , lo que me preguntaba es q si simplemente solo cambia la posicion ,porque una si va y la otra no
Título: Re: problema con la definicion de la variable Publicado por: xv0 en 11 Mayo 2014, 05:33 am Si especificas el error mucho mejor, yo el unico problema que le veo al code numero dos, es que si eax es negativo SF se pondra en 1, pero si luego se resta ebx y este es positivo la bandera SF se pondra en 0 y el jump no se ejecutara.
Asi que no tiene mucho sentido eso, no? Un saludo. Título: Re: problema con la definicion de la variable Publicado por: robertofd1995 en 11 Mayo 2014, 12:29 pm a vale , no me di cuenta de eso , hay estaba el error
bueno muchas gracias a todos por ayudar marco el tema como solucionado |