2009-04-06 18 views
22

No tengo conocimiento previo de la programación de ensamblaje y me gustaría aprender a codificar el ensamblaje x86 en una plataforma Linux. Sin embargo, estoy teniendo dificultades para encontrar un buen recurso con el que enseñarme.¿Cuál es la mejor manera de aprender ensamblaje x86 en una plataforma Linux?

El libro El arte de la asamblea se ve bien, pero enseña HLA. No estoy interesado en tener que aprender de una manera, y volver a aprender todo de nuevo. También parece que las arquitecturas RISC tienen mejores recursos para el ensamblaje, pero desafortunadamente no tengo un procesador RISC para aprender. ¿Alguien tiene alguna sugerencia?

Respuesta

10

http://asm.sf.net tiene algo de material en arquitecturas además de x86.

Si está interesado en las arquitecturas RISC, puede ejecutar Linux en Qemu. Qemu emula varias arquitecturas RISC como PowerPC, ARM y MIPS. Es posible que pueda encontrar una imagen de disco duro Qemu lista para usar here.

Otra forma de experimentar con las arquitecturas RISC sería utilizar el simulador incorporado de gdb.

2

Probablemente nada mejor que The Art of Assembly Language Programming y los otros recursos en ese sitio web.

+2

Bien, pero ¿para qué sirve aprender HLA si no puedo usarlo? – user87630

+1

Y no puedes usarlo ¿por qué? Descargar libre. En cualquier caso, el libro pasa por el conjunto de instrucciones regulares, que incluye cómo codifica las estructuras que las macros HLA le asignan. –

+5

Comencé a leer este libro, pero me resultó difícil y encontré que HLA se puso en medio. Fue como aprender español aprendiendo portugués. ¿Hay buenos libros para enseñar usando FASM? –

9

Encontré Assembly language step-by-step como un muy buen recurso. Tiene una sección en la parte posterior que apunta al montaje de Linux también.

+1

+1 y el autor está trabajando en una nueva edición. Recientemente escribió: "Ahora estoy a unos 2/3 del camino a través del Capítulo 9, de 13, y 113,000 palabras en, de alrededor de 175,000. Tiene que hacerse antes del 30 de junio". Consulte http://www.contrapositivediary.com/ para obtener actualizaciones. – dwc

0

Pruebe http://www.emu8086.com que es un emulador 8086 alojado en Windows con un ensamblador y depurador. Viene con un tutorial.

+3

Eso significaría ejecutar Windows. Es un gran sacrificio preguntar. –

+1

@CharlieMartin "Correr ventanas" "Un gran sacrificio" Me hizo reír. ¡Larga vida a Linux y Unix! – NlightNFotis

-3

El arte de la Asamblea lenguaje de programación

+3

¿Has leído la pregunta? ¿O las respuestas? –

0

aprendí ensamblador x86 de un libro sobre el 8086 (que no puedo recordar el nombre de al presente ... obviamente era bastante antiguo, y púrpura. Si Estoy realmente interesado, puedo desenterrarlo cuando llegue a casa). Eso solo te enseñará cosas de 16 bits, para las cosas más avanzadas de 32 bits, leí algunos tutoriales en línea. Nunca he hecho 64 bits. Al menos al principio, el sistema operativo al que apuntas probablemente no importará, ya que eres de muy bajo nivel ... el BIOS es todo lo que realmente te importa. Si no tiene acceso a un sistema de prueba, un emulador es probablemente una buena opción, como han mencionado otros, pero también puede construir un 8088 o 8086 sin demasiados problemas con piezas discretas. Puede encontrar tutoriales y diagramas de circuitos en línea fácilmente. Debería costar menos de $ 50 y es una gran experiencia de aprendizaje; básicamente, estás construyendo una placa base desde cero.

Si no está demasiado apegado al ensamblaje x86 y desea aprender RISC, recomiendo los microcontroladores PIC Microchip. Puede recoger un kit de inicio por menos de $ 50 (el PICKit 1, que tengo, incluso funciona en Linux). Tienen una amplia documentación y muchos tutoriales de terceros dirigidos a los aficionados.

+0

El kit de inicio parece interesante. Puedo investigar eso. Gracias. – user87630

2

Existen dos partes para aprender la programación a nivel de ensamblaje: los conceptos básicos y las arquitecturas específicas. Si no ha tenido ninguna exposición a la programación de ASM, le recomiendo encarecidamente que primero obtenga los elementos básicos con una arquitectura simple y pequeña, incluso aunque probablemente no sea directamente aplicable a ningún hardware real. Si muchas personas apuntan a un recurso en particular como "El arte de ...", échele otro vistazo, utilícelo para conocer qué es una arquitectura, cómo usar las herramientas básicas (asm, depurador, desasimiento, etc.).

Una vez que estén fuera del camino, puede comenzar a buscar conjuntos de instrucciones más avanzados. La arquitectura x86 y el conjunto de instrucciones son bastante intrincados y hay muchas formas oscuras de torcer tu cerebro: aprende algo simple antes de abordarlo.

0

A pesar de que mucha gente que conozco en la escuela odiaba este libro, que se vinculará de todos modos:

http://www.amazon.com/Professional-Assembly-Language-Programmer/dp/0764579010

La razón principal por la que utilicé este libro es porque utiliza x86 en Linux con el ensamblador GNU. Ese último punto me ayudó porque tuve que usar ese ensamblador en el laboratorio de nuestra escuela, y si no lo sabe, la sintaxis es diferente de la sintaxis de Intel.

Además, solo agregaría que aprender cómo se compilan los lenguajes de alto nivel en lenguaje ensamblador realmente me ayudó a avanzar.

1

ensamblador x86 es realmente un lenguaje de Intel, se aprende mejor con un chip de Intel y una plataforma de Windows que hace DOS

Si usted tiene algo así como WinXP allí solía ser un intérprete de DOS que mostró un usuario los fundamentos de asm y permite a un usuario para revertir una orden y modificar el código en tiempo real, a continuación, montar el código en un bloque que podría ejecutarse en el intérprete

fue llamado el "Ketman intérprete"

era para DOS sólo asm, pero fue bastante único porque le permite ver lo que sucede con todos los registros y d banderas y permite a un individuo totalmente despistado tener un control sobre la lógica

Cuestiones relacionadas