Autor
|
Tema: Duda urgente en NASM, ayuda por favor (Leído 8,497 veces)
|
Adri124
Desconectado
Mensajes: 14
|
Duda resuelta
|
|
« Última modificación: 30 Junio 2016, 19:33 pm por Adri124 »
|
En línea
|
|
|
|
AlbertoBSD
Programador y
Moderador Global
Desconectado
Mensajes: 3.705
🏴 Libertad!!!!!
|
Y cual es tu duda?
Si tienes alguna duda en especifico preguntala y te responderemos
Si no sabes programar en ASM hay varios tutoriales en los temas pegados en este subforo.
Por lo demas me parece deshonesto que alguien consiga su titulo universitario de esa forma. Podria resolver ese problema facilmente pero no tengo titulo universitario.
Saludos
|
|
« Última modificación: 28 Junio 2016, 14:52 pm por AlbertoBSD »
|
En línea
|
|
|
|
Adri124
Desconectado
Mensajes: 14
|
La duda que tengo es por qué produce violación de segmento. Llevo horas trackeando el error y no logro encontrarlo, por eso pido ayuda ya desesperadamente a alguien que sea capaz de encontrarlo, disculpa si te he molestado.
|
|
|
En línea
|
|
|
|
AlbertoBSD
Programador y
Moderador Global
Desconectado
Mensajes: 3.705
🏴 Libertad!!!!!
|
El detalle que si te da un segment fault quiere decir que estas tratando de escribir en memoria no inicializada.. posiblemente uno de tus mov a alguna de las direcciones absolutas que manejas entre corchetes.. Ya que tu instruccion solo detecta un overflow a nivel de registro el cual solo se activa si el segundo numero es mas grande que el primero y resutado seria negativo si el overflow flag esta encendido. jo near error_4
La resta como tal esta bien pero el problema esta en alguno de los mov ya que te da segment fault y es distinto al overflow a nivel de registro. La otra es que veo muchas instrucciones redundantes como push dword eax pop dword eax
mov dword [ebp-4], eax lea eax, [ebp-4]
Como dices que generaste ese codigo asm? Saludos
|
|
|
En línea
|
|
|
|
xv0
Desconectado
Mensajes: 1.027
|
Tienes alguna direccion de la violacion de segmento? Me gustaria depurarlo pero estoy fuera. Pero como dice el compañero, el codigo esta lleno de instrucciones sin sentido alguno, de hay posibles errores. sub esp , 4*1 /////////////// push dword 2147483647 pop dword eax mov dword [_x],eax //////////////////////// push dword eax pop dword eax mov dword [_ressuma],eax push dword _ressuma pop dword eax mov dword eax , [eax] push dword eax
Por que todo eso? Dime mas datos sobre el error, y podre decirte algo, pero yo depuraria el codigo no el error, todas esas cosas sobran y te ahorras problemas. Un saludo.
|
|
|
En línea
|
|
|
|
Adri124
Desconectado
Mensajes: 14
|
Muchas gracias por vuestras respuestas, respondiendo:
AlbertoBSD, el código lo genero con flex y bison, es un compilador de un lenguaje inventado muy similar a C, pero en este caso me está volviendo loco para detectar el fallo... me dice "Violación de segmento ("core" generado), y la verdad es que no sé cual es el mov que puede dar el fallo... he intentado depurarlos todos. Al menos la suma si que la realiza correctamente (30), después revienta.
No entiendo bien lo que me comentas del jo a nivel de registro, que es lo que debería fallar?
cpu2, el código puede ser algo caótico porque es generado en bison detectando expresiones, es un compilador que genera NASM dependiendo del código.
En cuanto a más detalles del error... llevo un buen rato intentando encontrar más información pero no doy con nada... solo sé que falla tras ejecutar la suma e imprimir el 30. Tras imprimir el 30, debería saltar a ****Error de ejecucion: overflow en resta
ACTUALIZACIÓN: Acabo de ver (intentando depurar a mi manera) que muy posiblemente la línea 126 sea la que provoca la violación de segmento. Esa instrucción es la que me carga en la variable x el valor 9999999999 para hacer la resta -9999999999 - 9999999999 que en lugar de provocar violación de segmento, debería ser detectada por jo y saltar, mostrando el código de error ****Error de ejecucion: overflow en resta
Por tanto, creo que podría ser un fallo en el jo, o en la carga del operando por ser demasiado grande... la verdad es que no sé realmente que es lo que falla ya
|
|
« Última modificación: 28 Junio 2016, 18:59 pm por Adri124 »
|
En línea
|
|
|
|
AlbertoBSD
Programador y
Moderador Global
Desconectado
Mensajes: 3.705
🏴 Libertad!!!!!
|
El máximo valor dado por un entero de 32 bits sin signo es de hasta 4 mil millones y pasado... No puedes simplemente asignar ese valor a una variable eax... Eso te va a dar un overflow en el registro. Que es cuando se activa la bandera de overflow (Cosa que validas con tu jo
Pero es totalmente Diferente a un segment fault Este ultimo se da por que estas tratando de leer o escribir en una direccion de memoria inexistente.
Saludos
|
|
|
En línea
|
|
|
|
Adri124
Desconectado
Mensajes: 14
|
DSuda resuelta
|
|
« Última modificación: 30 Junio 2016, 19:33 pm por Adri124 »
|
En línea
|
|
|
|
xv0
Desconectado
Mensajes: 1.027
|
Pero no seria mejor ,utilizar algun debugger pata saber de donde procede el segmentation fault?
Y a partir de hay arreglsr el problema, es lo que intente decir antes, depuralo y sabras el fallo.
Un saludo.
|
|
|
En línea
|
|
|
|
Adri124
Desconectado
Mensajes: 14
|
Hay algún buen debugger que me recomendéis?
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ayuda urgente por favor
Juegos y Consolas
|
vivastun
|
4
|
2,611
|
3 Agosto 2004, 19:10 pm
por vivastun
|
|
|
Duda con Arduino. Urgente por favor.
Dudas Generales
|
SARGE553413
|
2
|
2,090
|
9 Julio 2013, 04:57 am
por engel lex
|
|
|
[NASM] (Duda) El registro DS no funciona como debería
ASM
|
class_OpenGL
|
2
|
3,616
|
1 Octubre 2016, 12:08 pm
por class_OpenGL
|
|
|
Duda sobre ensamblador (NASM), IDE SASM
ASM
|
UsuarioZ
|
2
|
4,031
|
9 Octubre 2020, 23:00 pm
por UsuarioZ
|
|
|
MOVIDO: Duda sobre ensamblador (NASM), IDE SASM
Programación General
|
MCKSys Argentina
|
0
|
2,356
|
8 Octubre 2020, 11:09 am
por MCKSys Argentina
|
|