Multiples preguntas

Iniciado por TR NOvato, 25 Marzo 2017, 20:39 PM

0 Miembros y 1 Visitante están viendo este tema.

TR NOvato

Buenas,tengo unas dudas respecto a la función o sentencia MOV(perdón si la describo mal) entre otras cosas,hace ya unas cuantas semanas me inicie en el mundo de la programación,empece aprendiendo c/c++ con un libro de deitel segunda edición,llegue hasta el tema de arrays y punteros,la verdad hasta ahora todo lo que e visto se me a echo fácil,la cosa resulta cuando encontré un pdf sobre programación de virus en ensamblador,después comencé a ver algunos blogs con las ventajas del ensamblador, y me formula algunas preguntas,los lenguajes de alto nivel por mas avanzados que sean no pueden optimizar la ejecución de los programas tanto como lo hace alguien que sabe ensamblador? la verdad leí que la mayoría de programadores recien salidos de las universidades no son capaces de realizar software optimizado por así decirlo,otra pregunta que me hice fue,el ensamblador que estoy aprendiendo es lo mismo para cada procesador?,actualmente en el tutorial leí sobre la estructuras de las computadoras memorias,sistemas binarios ,hexadecimales,registros de cpu,etc,ahora que esta empezando el curso de ensamblador básico para la programación de virus,esta usando los registros eax,ebx,ecx,edx,esi,edi,ebp,eip,esp,estos registros son los estandars ?,que pasa si uso registros para procesadores de 16 bits?acaso no pueden correr normal en arquitecturas de 32 o 64?, ahora en el curso estamos en la sentencio o función mov(perdón si no es su definición),y tengo una duda si hago algo así,MOV word ptr eax,1232h (estoy escribiendo la direccion de memoria en eax verdad?), si hago algo así,Mov eax,[12312h](ya no tengo que poner el word ptr,el cotenido de la direccion de memoria se pasa a eax verdad?),si hago esto MOV [eax],1232h(estoy escribiendo la direccion de memoria1232h en la direccion de memoria que contiene eax?),si quiere pasar un registro de por ejemplo 16 bits a uno de 32 puedo hacer esto Mov word ptr ebx,al(o necesariamente tengo que usar el movzx o el movsx),y para que sirven los segmentos ?,e leido que son para especificar a que segmento queremos acceder o algo así.no capte bien la idea,Y finalmente creen que vale la pena meterme un buen tiempo con el ensamblador ?,o mejor seria solo conocer lo basico y dedicarme a estudiar lenguajes de alto nivel,mis objetivos son generales,me gustaria crear juegos,virus,exploits,entre otros.Espero su ayuda,perdon si e cometido algún error con mis descripciones o demas,apenas soy un novato en este gran mundo,y pdst:lo de la programacion de virus lo leo por curiosidad,no va conmigo eso de ir a infectar ordenadores para amargarle la vida a alguien,Saludos :D,les dejo el curso que estoy leyendo,aunque creo que es un poco corto,http://vignette3.wikia.nocookie.net/hacker/images/1/17/Curso_de_programaci%C3%B3n_de_virus.pdf/revision/latest?cb=20120929175804&path-prefix=es

engel lex

Citarlos lenguajes de alto nivel por mas avanzados que sean no pueden optimizar la ejecución de los programas tanto como lo hace alguien que sabe ensamblador?

en hecho si, los compiladores al compilar tu programa, hacen trabajo de optimización en base al programa, por otro lado, depende de lo que hagas, dicha optimización pueda no "ser necesaria" ya que hoy dia hay la potencia necesaria para dejarse pasar ciertos detalles, o por lo menos comparando a el tardar 10 horas haciendo un programa en c++ VS 150 horas haciendo lo mismo en ASM

procura usar saltos de linea, resaltar texto y demás... te puedo decir sin que me quede nada por dentro: td;dr


si tu texto cansa la vista o es incomodo de leer, olvida que sea leido y por consecuencia respondido
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

TR NOvato

XD perdon por el texto, y bueno con todo lo que dijiste saco resumen que, no es necesario meterme horas y horas con el ensamblador,si no aprender conceptos básicos seria suficiente,y que con respecto a la optimización,los compiladores actuales son capaces de hacer esto.

cpu2

Citarlos lenguajes de alto nivel por mas avanzados que sean no pueden optimizar la ejecución de los programas tanto como lo hace alguien que sabe ensamblador?

Como dijo el compañero @engel lex, el compilador generara algo mejor o peor depende de tu código, tienes opciones de optimización pero me remito a lo primero que te dije, no hace milagros si el código es malo, lo que genere no será muy bueno, por lo contrario si eres principiante en ASM, es muy posible que un código medio de C/C++ con una optimización sea mucho mas superior a tu código en ASM.

También dependerá del compilador que uses. Por otra parte tienes compiladores privativos como Parallel de Intel, que tienen que hacer maravillas.

Citarel ensamblador que estoy aprendiendo es lo mismo para cada procesador?,

No. Dependera de la Arquitectura de la CPU, no son las mismas instrucciones para un ARM que para un x86 o powerpc, sparc...

Ya no son solo las instrucciones, si no el diseño de todo, será distinto.

Citaresta usando los registros eax,ebx,ecx,edx,esi,edi,ebp,eip,esp,estos registros son los estandars ?,que pasa si uso registros para procesadores de 16 bits?acaso no pueden correr normal en arquitecturas de 32 o 64?,

Si son los principales, pero faltan mas por ejemplo en x86_64, tienes los r*, luego los XMM, SEE etc...

Si puedes usar registros de 16 bits en x86, x86_64. Pero no como si estuvieras en modo real claro esta.


Sobre la pregunta de los mov, cuando vayas estudiando solventaras las dudas, prácticamente te estas respodiendo a ti mismo.


CitarY finalmente creen que vale la pena meterme un buen tiempo con el ensamblador ?,o mejor seria solo conocer lo basico y dedicarme a estudiar lenguajes de alto nivel,mis objetivos son generales,me gustaria crear juegos,virus,exploits,entre otros.

Si te gusta porque no meterse, no te hace falta saber ASM para hacer lo que quieres, pero no esta de mas saber algo. Pero cuando me refiero a algo no es un Hello world, con 3 o 4 mov.

Un saludo.

TR NOvato

Bueno,Gracias por las respuestas  ::), Seguiré con el curso de ensamblador ,aunque nose si me tome mas tiempo aprenderlo a comparación de un lenguaje de alto nivel el cual aun no termino de aprender creo yo,recién voy por los punteros en c++ XD y lo mas grande que hice fue una agenda , la verdad si que no me caería mal saber algo de mas como dices,Saludos :D