Hack x Crack - Comunidad de Seguridad informática

Programación => ASM => Mensaje iniciado por: doommachine en Mayo 02, 2016, 01:05:04 am

Título: ¿Que tipo de lenguaje ensamblador conviene mas aprender?
Publicado por: doommachine en Mayo 02, 2016, 01:05:04 am
Hola que tal, desde hace mucho he tenido bastante curiosidad por el lenguaje ensamblador y aun que no me pienso dedicar a él me gustaría aprender por lo menos lo básico  pero he visto que hay diferentes tipos de lenguaje ensamblador así que tengo dudas sobre cual elegir, entonces me gustaría el consejo de alguien con experiencia.
¿cual es el mejor?
¿cual el mas usado hoy en día?
¿cual el que mas tiene futuro?
¿cual el mas eficiente?
¿cual me recomiendan aprender?
¿y que otros consejos me podrían dar?

Gracias de antemanos, saludos.
Título: Re:¿Que tipo de lenguaje ensamblador conviene mas aprender?
Publicado por: Dedsec en Mayo 02, 2016, 03:14:01 am
hola mira esto a ver si es de ayuda
un saludo !!  8)
Título: Re:¿Que tipo de lenguaje ensamblador conviene mas aprender?
Publicado por: stakewinner00 en Mayo 02, 2016, 08:56:07 am
Con diferentes tipos te refieres a las diferentes arquitecturas que hay? Hoy en día la mayoría de PCs son intel, así que convendría aprender el ensamblador para trabajar con el. La mayoría de móviles son arm, así que seguramente también sería recomendable entenderlo.

Los procesadores intel/amd típicamente son más caros, más potentes y tienen un mayor consumo eléctricos que los arm, por eso unos se usan más en PCs y los otros en moviles y algunos otros embebidos.

Hay otras arquitecturas (https://en.wikipedia.org/wiki/List_of_CPU_architectures) pero las de los procesadores arm y intel creo que son los más usados y importantes hoy en día.
Título: Re:¿Que tipo de lenguaje ensamblador conviene mas aprender?
Publicado por: ravenheart en Mayo 02, 2016, 10:32:50 am
Hola que tal, desde hace mucho he tenido bastante curiosidad por el lenguaje ensamblador y aun que no me pienso dedicar a él me gustaría aprender por lo menos lo básico  pero he visto que hay diferentes tipos de lenguaje ensamblador así que tengo dudas sobre cual elegir, entonces me gustaría el consejo de alguien con experiencia.

Pareces un poco confundido. El lenguaje ensamblador no se elige, va asociado al micro que quieres programar. Los PC, como dice stakewinner, son Intel o AMD, que más o menos comparten el mismo lenguaje, aunque no todos soportan exactamente las mismas instrucciones (con cada nueva generación normalmente se añaden algunas extensiones, como las viejas MMX y las diferentes versiones de SSE más recientes). Además hay que considerar si los programas en modo 32 bits o, si el SO lo permite, 64.

No hay uno mejor per se. Hay una división un tanto artificial entre conjuntos de instrucciones reducidos (RISC, unas pocas instrucciones muy rápidas) y complejos (CISC, muchas instrucciones, algunas muy complejas), aunque últimamente se tiende a una arquitectura híbrida. Los x86/x64 son arquitectura CISC de libro, pero los más recientes se implementan por microcódigo (software) sobre una arquitectura RISC.

Citar
¿cual es el mejor?
No importa mucho, porque no puedes elegir, pero como siempre, depende. Tradicionalmente, en el ámbito académico se han considerado mejores los RISC, aunque es más productivo programar un CISC, y para el programador de compiladores supongo que estos tienen mayor potencial de optimización. Lo mejor siempre depende de tus objetivos.

Citar
¿cual el mas usado hoy en día?

La verdad es que no tengo ni idea. Quizá el ensamblador de los microcontroladores PIC.

Citar
¿cual el que mas tiene futuro?
Todos. El ensamblador no va a desaparecer mientras sobreviva un micro. Aunque hace tiempo que hay una tendencia a no programar en ensamblador salvo algún microcontrolador sencillo para proyectos de electrónica. Eso no creo que cambie mucho.

Citar
¿cual el mas eficiente?
De nuevo, depende. Si quieres rendimiento, intel. Si quieres bajo consumo de energía, hace unos 10 años estaba la serie nanowatt de Microchip, que en reposo consumía nanowattios, y trabajando un poco más. Si buscas un buen equilibrio entre ambas, los ARM o la serie ATOM de intel (que también es x86) van muy bien.

Citar
¿cual me recomiendan aprender?
Depende de tus objetivos. Si quieres hacer apps para PC, x86/x64 sin duda. Aprender ARM para programar móviles no sé si es buena idea, no conozco a nadie que programe móviles en otra cosa que java (y eso que hay un SDK nativo en C++ para Android). Puede ser interesante.
Si solo quieres tener una idea aproximada de como funcionan las cosas y no tienes intención de programar de verdad, te recomendaría que busques un micro más sencillo (por ejemplo, el 65000 de Motorola o el Z80). Si aún así quieres hacer algo práctico, puedes descargarte un emulador de gameboy, que utiliza una variante del z80, y buscar documentación específica.

Citar
¿y que otros consejos me podrían dar?
No escupas contra el viento.
Título: Re:¿Que tipo de lenguaje ensamblador conviene mas aprender?
Publicado por: Jen en Mayo 02, 2016, 04:16:59 pm
Hola que tal, desde hace mucho he tenido bastante curiosidad por el lenguaje ensamblador y aun que no me pienso dedicar a él me gustaría aprender por lo menos lo básico  pero he visto que hay diferentes tipos de lenguaje ensamblador así que tengo dudas sobre cual elegir, entonces me gustaría el consejo de alguien con experiencia.

Pareces un poco confundido. El lenguaje ensamblador no se elige, va asociado al micro que quieres programar. Los PC, como dice stakewinner, son Intel o AMD, que más o menos comparten el mismo lenguaje, aunque no todos soportan exactamente las mismas instrucciones (con cada nueva generación normalmente se añaden algunas extensiones, como las viejas MMX y las diferentes versiones de SSE más recientes). Además hay que considerar si los programas en modo 32 bits o, si el SO lo permite, 64.

No hay uno mejor per se. Hay una división un tanto artificial entre conjuntos de instrucciones reducidos (RISC, unas pocas instrucciones muy rápidas) y complejos (CISC, muchas instrucciones, algunas muy complejas), aunque últimamente se tiende a una arquitectura híbrida. Los x86/x64 son arquitectura CISC de libro, pero los más recientes se implementan por microcódigo (software) sobre una arquitectura RISC.

Citar
¿cual es el mejor?
No importa mucho, porque no puedes elegir, pero como siempre, depende. Tradicionalmente, en el ámbito académico se han considerado mejores los RISC, aunque es más productivo programar un CISC, y para el programador de compiladores supongo que estos tienen mayor potencial de optimización. Lo mejor siempre depende de tus objetivos.

Citar
¿cual el mas usado hoy en día?

La verdad es que no tengo ni idea. Quizá el ensamblador de los microcontroladores PIC.

Citar
¿cual el que mas tiene futuro?
Todos. El ensamblador no va a desaparecer mientras sobreviva un micro. Aunque hace tiempo que hay una tendencia a no programar en ensamblador salvo algún microcontrolador sencillo para proyectos de electrónica. Eso no creo que cambie mucho.

Citar
¿cual el mas eficiente?
De nuevo, depende. Si quieres rendimiento, intel. Si quieres bajo consumo de energía, hace unos 10 años estaba la serie nanowatt de Microchip, que en reposo consumía nanowattios, y trabajando un poco más. Si buscas un buen equilibrio entre ambas, los ARM o la serie ATOM de intel (que también es x86) van muy bien.

Citar
¿cual me recomiendan aprender?
Depende de tus objetivos. Si quieres hacer apps para PC, x86/x64 sin duda. Aprender ARM para programar móviles no sé si es buena idea, no conozco a nadie que programe móviles en otra cosa que java (y eso que hay un SDK nativo en C++ para Android). Puede ser interesante.
Si solo quieres tener una idea aproximada de como funcionan las cosas y no tienes intención de programar de verdad, te recomendaría que busques un micro más sencillo (por ejemplo, el 65000 de Motorola o el Z80). Si aún así quieres hacer algo práctico, puedes descargarte un emulador de gameboy, que utiliza una variante del z80, y buscar documentación específica.

Citar
¿y que otros consejos me podrían dar?
No escupas contra el viento.

Muy buena respuesta.
Título: Re:¿Que tipo de lenguaje ensamblador conviene mas aprender?
Publicado por: doommachine en Mayo 03, 2016, 12:09:03 am
Gracias por las respuestas, si, estaba algo confundido
Título: Re:¿Que tipo de lenguaje ensamblador conviene mas aprender?
Publicado por: Gierill en Enero 20, 2017, 11:56:24 am
Buenas, se que no se publica respuesta a este hilo desde hace mucho tiempo, pero he estado leyendo la respuesta de ravenheart, y hay un punto que creo que no es del todo correcto. Dice que en la actualidad ya prácticamente no se usa el lenguaje ensamblador, pero quiero recordar que el Internet de las cosas esta cada vez mas cerca, y prácticamente todo lo que se programa en esos aparatitos esta hecho en ensamblador, y este es solo un minúsculo ejemplo de la cantidad de veces que las personas programan en ensamblador. El tema de la eficiencia es cada día mas importante y programar a bajo nivel es importantísimo para que todo funcione como es debido. No es que sea ultra fan del lenguaje ensamblador, pero quería dejar claro a quien lo lea que puede llegar a ser mas importante entender el lenguaje ensamblador que algunos de los lenguajes que la mayoría de gente usa, ya que si programas sin saber lo que tu código hace realmente en el computador es como dar palos de ciego.

Pd: Yo, personalmente, si quieres aprender lenguaje ensamblador, te recomendaría que empezaras con el de ARM para la nintendo DS. Si buscas por San Google encontraras una cantidad de información brutal. Otro ejemplo podría ser la raspberry pi, también en ARM, pero la ds te va a molar mas jeje.
Título: Re:¿Que tipo de lenguaje ensamblador conviene mas aprender?
Publicado por: animanegra en Enero 20, 2017, 12:17:47 pm
Pues yo no estoy muy de acuerdo contigo Girerill, el IoT esta lleno de c, practicamente todo el mundo que programa cosas para el IoT usa o lenguajes tipo c (los que se atreven) o utilizan herramientas de automatizacion basadas en matlab (creo que era el simulink). Porque es un mundo lleno de ingenieros industriales.
Precisamente por ese motivo el IoT esta lleno de bugs, porque en muchos casos está programado por gente que no sabe programar (entendiendo por programar saber realmente lo que pasa a nivel bajo con las instrucciones que se meten y esas cosas y haber tenido un recorrido academico y laboral en torno a la programación). Con esto no quiero decir en ningun caso que no exista muchisima gente muy cualificada y muy valida entre los ingenieros industriales (de hecho hay informaticos a los que no dejaria programar ni el video), lo que pasa es que a veces la gente se anima a hacer cosas de forma muy valiente porque no se tienen determinados conocimientos de los problemas que acarrean ciertas decisiones. Me refiero a gente que ha estado toda la vida haciendo tareas que no necesitaban apartado software (y las hacian realmente bien) y ahora el software está en todos sitios y es un paradigma que simplemente no controlan.