2008-09-26 19 views

Respuesta

13

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

Además, si usted no está en modo de núcleo entonces no hay posibilidad de atornillar todo, en realidad, e incluso si estás en el modo kernel, es difícil realmente destruir algo.

Editar: Además, obtenga gcc y tal 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.

+0

+1 en el libro Inverso - excelente libro. –

0

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

En cuanto a herramientas, puede 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.

1

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.

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

3

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 se 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.

5

El idioma del ensamblador viene 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). Compruebe 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) podría tener documentación sobre cómo construir aplicaciones OS X utilizando el ensamblador.

+0

Aprender x86-64 ASM antes de aprender x86 ASM es muy parecido a escribir un poema épico antes de aprender la primera palabra.Tantas cosas en él que harán tropezar a la gente nueva. Definitivamente no recomendado. –

+0

Requiere esfuerzo escribir una aplicación OSX de 64 bits; son de 32 bits por defecto. –

+0

De acuerdo, no soy un desarrollador de Mac. Sin embargo, OSX es de 64 bits y http://www.apple.com/macosx/technology/64bit.html afirma que Xcode 3.0 admite la creación de aplicaciones de 64 bits, por lo que no es solo una cuestión de elección del desarrollador. Y saber lo que haces, por supuesto, pero eso se aplica igualmente para crear aplicaciones de 32 bits. –

1

here

programé el montaje en un 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í el ensamblador en el Apple II: el monitor de lenguaje de máquina 6502 incorporado 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 el montaje. 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 tenga miedo.

5

Para iniciar el montaje de aprendizaje, es posible que desee comenzar con programas de C simples y pedir GCC para generar el código ensamblador para que el uso de la opción -S:

gcc -S hello.c -o hello.asm 

A continuación, será capaz de entender cómo llamar funciones, pasar argumentos, etc.

0

Hay tres 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 un Intel Mac, todavía es un conjunto razonable para PPC, por ejemplo Mac OS X Internals.

  2. Cómo montar vincular sus programas - si tiene instaladas las Herramientas para desarrolladores que tienen GCC y las herramientas asociadas

  3. Cómo hablar con el OS - aquí es donde el montaje Mac es mucho menos bien documentada 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 es here.

0

Si tienes Herramientas de Desarrollo instalado, sólo tiene que abrir la terminal y tipo como (GNU Assembler - parte de Binutils ).

0

Para PPC prueba Lightsoft

+0

El sitio ya no proporciona el software PPC. – Seki

Cuestiones relacionadas