programar programacion lenguaje ensamblador curso basico assembler macos assembly

macos - programacion - ¿Dónde puedo encontrar herramientas para aprender ensamblador en OS X?



programacion en assembler (10)

Me gustaría aprender ensamblador. Sin embargo, hay muy pocos recursos para hacer assembler con OS X.

¿Hay alguien por ahí que haya programado ensamblar en una Mac? ¿Donde aprendiste?

Y, ¿hay alguna razón por la que no debería estar haciendo asamblea? ¿Me arriesgo (significativamente) a colgar mi computadora de forma irreparable?


El lenguaje de ensamblador está determinado por la plataforma de hardware, no por el sistema operativo. Dado que OS X se ejecuta en la plataforma Intel y es de 64 bits, debe buscar información sobre el ensamblador x64 (también llamado AMD64). Consulte el artículo de Wikipedia ( http://en.wikipedia.org/wiki/X86-64 ) para obtener una gran cantidad de enlaces a la documentación sobre x64.

Además, la documentación de las herramientas OS X puede contener mucha información sobre el ensamblador x64. En particular, Netwide Assembler (NASM - http://developer.apple.com/documentation/DeveloperTools/nasm/nasmdoc0.html ) puede tener documentación sobre cómo construir aplicaciones OS X utilizando el ensamblador.


Hay dos cosas que usted debe saber para escribir el lenguaje ensamblador en un sistema con un sistema operativo (a diferencia del ensamblaje ''bare metal'' que es un mundo propio):

  1. Cómo funciona el conjunto de instrucciones: una gran cantidad de recursos para Intel X86 si tiene una Intel Mac, un conjunto aún razonable para PPC, por ejemplo, Mac OS X Internals .

  2. Cómo ensamblar vincula sus programas: si tiene las herramientas de desarrollador instaladas, tiene GCC y las herramientas asociadas

  3. Cómo hablar con el sistema operativo: aquí es donde el ensamblaje de Mac está mucho menos documentado que Windows o Linux. Puede ser que tenga que escribir programas C equivalentes y usar ''gcc -S'' para ver qué convenciones de restauración de llamada / pila son apropiadas. Depende de lo que quiera hacer, pero en un minio necesita las llamadas del sistema operativo para IO y la asignación de memoria.

Un buen punto de partida está here .


Nasm / yasm son su mejor apuesta; La sintaxis en línea de gcc es bastante paralizante y puede ser muy doloroso de usar a veces, además de que hay literalmente algunas cosas que no puede hacer. La macro sintaxis de Nasm también es mucho más útil, un regalo del cielo en un lenguaje como el ensamblaje que no tiene características incorporadas de creación de plantillas.


No hay razón por la que no deberías; no hay nada que puedas hacer en ensamblador que no puedas hacer en un lenguaje de nivel superior como C.

En lo que respecta a las herramientas, es posible que desee instalar MacPorts y obtener el ensamblador GNU. Esa puede o no ser la forma más fácil, pero es gratuita y probablemente pueda encontrar documentación tutorial para escribir programas Unix en ensamblador GNU en algún lugar de la red.


Para PPC prueba Lightsoft


Para comenzar a aprender a ensamblar, es posible que desee comenzar con programas C sencillos y pedirle a GCC que genere el código de ensamblador utilizando la opción -S:

gcc -S hello.c -o hello.asm

Entonces podrá entender cómo llamar funciones, pasar argumentos, etc.


Si está usando un PowerPC Mac, mire en el ensamblador en línea de gcc. De lo contrario, mira dentro de nasm. No puedo dar ninguna referencia decente a PPC ASM (son pocos y distantes), pero sugiero las siguientes cosas para aprender x86 asm:

Además, si no estás en el modo kernel, entonces no hay posibilidad de arruinar nada, e incluso si estás en modo kernel, es difícil destruirlo realmente.

Editar: Además, obtén gcc y otros de XCode no Macports o somesuch. Te espera un mundo de archivos Mach-O malformados si no lo haces. No es divertido diagnosticar problemas de formato de archivo cuando recién estás iniciando la piratería.


Si tiene Developer Tools instaladas, simplemente puede abrir Terminal y escribir como ( GNU Assembler - parte de Binutils ).


XCode (es decir, GCC) tiene un gran soporte para escribir ensamblador. Es divertido de aprender (aunque es poco probable que lo necesite), y lo peor que puede hacer es bloquear el programa que está escribiendo, al igual que en C. Solo Google para ''gcc inline asm x86 tutorial'' y usted debería encontrar muchos puntos de partida. No se preocupe, algunos parecerán ser específicos de Linux, generalmente funcionarán igual de bien en XCode.

(editar) ... asumiendo que tienes una Intel Mac por supuesto; si no, entonces reemplace ''x86'' por ''ppc''.


here

Programé el ensamblaje en una Mac. Era un ensamblador Motorola 680x0 que usaba MPW. He tocado el ensamblador PowerPC varias veces en CodeWarrior y ProjectBuilder. Ahora ProjectBuilder se llama XCode, y está Intel. El ensamblador es una de las muchas herramientas dentro de XCode.

Originalmente aprendí assembler en Apple II: el monitor de lenguaje de máquina 6502 integrado en ROM, el mini ensamblador Sweet16 y otros. Más tarde, utilicé el ensamblador Intel 80186 para acelerar bits lentos de código C y trabajé para un curso de un día sobre el ensamblador Intel 80186 en una universidad. Más tarde, tuve que mantener un ensamblaje de 680x0 para Mac. Eso fue hace mucho tiempo.

No creo que haya ninguna razón para no hacer la asamblea. El aprendizaje es genial. Aprende todo lo que puedas Súmese a un depurador de nivel lo suficientemente bajo y observe el código desensamblado.

Mi consejo es:

No tengas miedo