assembly - pelicula - ¿Cómo empiezo a aprender Asamblea?
assembly significado (5)
Me gustaría jugar escribiendo un ensamblaje en mi Mac, idealmente nativo, pero entendería si es más fácil de aprender en QEMU o algo así.
Veo que hay diferentes dialectos de ensamblaje dependiendo del procesador: ¿qué dialecto es el "mejor" para aprender?
¿Realmente no tengo idea de dónde comenzar, ningún indicador sobre cómo ejecutar un programa en ensamblaje?
Aprendí MIPS y probé en SPIM para una clase sobre "organización de computadoras".
No estoy seguro de si este libro funcionará, pero podría valer la pena intentarlo. Utilizamos un "libro" (más como un tutorial y una hoja de trucos en realidad) escrito por el profesor, por lo que no está disponible.
Bueno, aunque no es lo que algunas personas llaman el "mejor" ensamblaje del mercado, recomendaría aprender X86 / X86-64 ya que es el más utilizado. Para ejecutar el programa, simplemente puede usar GCC para traducirlo en binario y luego ejecutarlo a través de su consola.
Hace unos (OK muchos) años, recogí el libro de Peter Norton sobre la Asamblea http://www.amazon.com/Assembly-Language-Primer-Personal-Computer/dp/0136619010 . Fue una manera fantástica de comenzar la programación de ensamblaje para PC. Me pregunto si todavía puede obtener esto y usar DOSbox para trabajar a través de él.
Involúcrese con las comunidades que prosperan en el código de ensamblaje. Lo primero que viene a la mente es el demoscene. Por un lado, echa un vistazo a las producciones lanzadas para Mac x86 en pouet.net . Intente ponerse en contacto con algunos de los programadores en los grupos activos. Algunos de ellos pueden estar dispuestos a compartir ideas y códigos y quizás incluso a motivarte a escribir el tuyo.
Así es como comencé en el pasado, pero en un Atari de 8 bits.
Mi sugerencia es actuar con el mejor productor de ensambladores: gcc.
Escriba programas simples en C y luego compílelos con el interruptor -S. Obtendrá un archivo.s que contiene el código del ensamblador. Tinker con él y lo aprenderás. La mejor parte es que si quieres aprender un ensamblador diferente, puedes compilar gcc como compilador cruzado y producir ensamblador para cualquier plataforma compatible.
Recuerde deshabilitar las optimizaciones con -O0, de lo contrario podría encontrar trucos extraños.
Esto 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