¿Dónde puedo encontrar herramientas para aprender ensamblador en OS X? [cerrado]

StackOverflow https://stackoverflow.com/questions/137523

  •  02-07-2019
  •  | 
  •  

Pregunta

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

¿Hay alguien por ahí que haya programado en ensamblador en una Mac? ¿Dónde aprendiste?

Y, ¿hay alguna razón por la que no debería estar haciendo el montaje? ¿Me arriesgo (significativamente) a que mi computadora se vuelva irreparable?

¿Fue útil?

Solución

Si está utilizando un Mac PowerPC, busque en el ensamblador en línea de gcc. De lo contrario, mira en nasm. No puedo dar referencias decentes a PPC ASM (son pocas y distantes entre sí), pero sugiero las siguientes cosas para aprender x86 asm:

Además, si no estás en modo kernel, entonces no hay posibilidad de estropear nada, realmente, e incluso si estás en modo kernel es difícil destruir algo.

Editar: También, obtenga gcc y demás desde XCode no Macports o algo así. Te encontrarás con un mundo de archivos de Mach-O malformados si no lo haces. No es divertido diagnosticar problemas con el formato de archivo cuando apenas está comenzando el pirateo asm.

Otros consejos

El lenguaje del 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 en el ensamblador x64 (también denominado AMD64). Consulte el artículo de Wikipedia ( http://en.wikipedia.org/wiki/X86-64) para una gran cantidad de enlaces a documentación sobre x64.

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

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

gcc -S hello.c -o hello.asm

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

Nasm / yasm es tu mejor apuesta; La sintaxis en línea de gcc es bastante paralizante y puede ser muy dolorosa de usar a veces, además, hay literalmente algunas cosas que no pueden hacer. La sintaxis macro de Nasm también es mucho más útil, una bendición en un lenguaje como ensamblador que no tiene funciones de plantillas integradas.

XCode (es decir, GCC) tiene un gran soporte para escribir ensambladores. Es algo divertido de aprender (aunque es poco probable que lo necesites), y lo peor que puedes hacer es bloquear el programa que estás escribiendo, igual que en C. Solo busca Google en 'tutorial gcc inline asm x86' y tú Debe encontrar un montón de puntos de partida. No se preocupe de que algunos parezcan específicos de Linux, generalmente funcionarán igual de bien en XCode.

(editar) ... asumiendo que tienes un Mac Intel por supuesto; si no, reemplaza 'x86' con 'ppc'.

here

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

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

No creo que haya ninguna razón para no hacer el montaje. El aprendizaje es genial. Aprende todo lo que puedas. Entra en un depurador de nivel suficientemente bajo y mira el código desensamblado.

Mi consejo es:

  

No te asustes.

No hay razón por la que no debas; no hay nada que pueda hacer en lenguaje ensamblador que no pueda hacer en un lenguaje de nivel superior como C.

En cuanto 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 un ensamblador GNU en algún lugar de la red.

Hay dos cosas que debe saber para escribir 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 un Mac Intel, un conjunto aún razonable para PPC, por ejemplo Internos de Mac OS X .

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

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

Un buen punto de partida es aquí .

Si tienes Herramientas de desarrollo instaladas, puedes simplemente abrir Terminal y escribir como ( GNU Assembler - parte de Binutils ).

Para PPC intente Lightsoft

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top