2009-07-20 13 views
16

? Me gustaría jugar con la escritura de algún ensamblaje en mi Mac, idealmente nativo, pero entiendo si es más fácil de aprender en QEMU o algo así.¿Cómo empiezo a aprender Assembly

Veo que hay diferentes dialectos de ensamblaje según el procesador: ¿qué dialecto es el "mejor" para aprender?

Realmente no tengo ni idea de por dónde empezar, ¿algún indicador sobre cómo ejecutar un programa en ensamblaje?

Respuesta

1

Bueno, aunque no es lo que algunas personas llaman el "mejor" montaje, recomendaría aprender X86/X86-64 ya que es el más utilizado. Para ejecutar el programa, simplemente puede usar GCC para traducirlo a formato binario y luego ejecutarlo a través de su consola.

14

Mi sugerencia es actuar con el mejor productor de ensambladores: gcc.

Escriba programas simples en C y luego compílelos con el modificador -S. Obtendrá un archivo .s que contiene el código ensamblador. Juega con él y lo aprenderás. La mejor parte es que si desea aprender un ensamblador diferente, puede simplemente compilar gcc como compilador cruzado y producir ensamblador para cualquier plataforma compatible.

Recuerde desactivar las optimizaciones con -O0, de lo contrario podría encontrar trucos extraños.

Esta es hola mundo en ensamblador

.cstring 
LC0: 
    .ascii "hello world!\0" 
    .text 
.globl _main 
_main: 
    pushl %ebp 
    movl %esp, %ebp 
    pushl %ebx 
    subl $20, %esp 
    call L3 
"L00000000001$pb": 
L3: 
    popl %ebx 
    leal LC0-"L00000000001$pb"(%ebx), %eax 
    movl %eax, (%esp) 
    call L_puts$stub 
    movl $0, %eax 
    addl $20, %esp 
    popl %ebx 
    leave 
    ret 
    .section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5 
L_puts$stub: 
    .indirect_symbol _puts 
    hlt ; hlt ; hlt ; hlt ; hlt 
    .subsections_via_symbols 
+0

Eso suena una manera útil de hacerlo. ¿Cómo convierto el archivo .s en un archivo binario? –

+1

con gcc hello.s :) –

+0

¿Mantiene las informaciones de depuración (nombre de la variable, etc.)? –

0

Aprendí MIPS y probé en SPIM para una clase sobre "organización de computadoras".

No estoy seguro de si this book funcionará, pero podría valer la pena intentarlo. Usamos un "libro" (más parecido a un tutorial, y una hoja de trucos realmente) escrito por el profesor, por lo que no está disponible.

0

Involúcrese con las comunidades que prosperan en el código de ensamblado. Lo primero que se me viene a la mente es el demoscene. Para empezar, mira el productions released for x86 Macs on pouet.net. Intente ponerse en contacto con algunos de los codificadores en los grupos activos. Algunos de ellos pueden estar dispuestos a compartir ideas y códigos e incluso motivarlos para que escriban el suyo propio.

Así empecé de nuevo en el día, pero con un Atari de 8 bits.