2011-12-07 32 views
6

Me gustaría probar algunos códigos de ensamblaje ARM con Apple iOS solo para fines educativos. Me gustaría comenzar con un código en línea dentro de Xcode. Según tengo entendido, necesito compilar para un dispositivo con iOS, por ejemplo para mi iPhone, lo que significa que tengo que pagar $ 99/año por membresía. No creo que pueda usar el código ensamblador ASM con un simulador de teléfono con iOS. Estoy teniendo dificultades para encontrar ejemplos, libros o documentación sobre el código ensamblador ARM en Xcode env con un iPhone. ¿Estoy haciendo esto mal? Tal vez iOS no es el entorno más fácil de usar para aprender ARM Assembly.iOS código de ensamblaje

+1

Fwiw, aquí es un [colección de enlaces] (http://www.shervinemami.info/armAssembly.html) en la escritura de programas de montaje para iOS. Dudo seriamente el valor de este ejercicio, que no sea educativo y de entretenimiento. – dasblinkenlight

+0

Escribir código ensamblador para iOS/ARM requiere un dispositivo iOS y una membresía en el programa. Para comenzar, puede ser suficiente leer el código ARM generado por el compilador, ver http://stackoverflow.com/questions/13166055/how-do-i-get-started-with-arm-on-ios –

+1

Mi Publicación de blog sobre el momento de ARM asm en iOS proporciona una serie de enlaces útiles y un ejemplo de proyecto de Xcode que incluye archivos .s adjuntos a un proyecto de Xcode: http://www.modejong.com/blog/post10_arm_timing_framework/index.html – MoDJ

Respuesta

1

Lo que necesita es un kit de desarrollo ARM con un kit de herramientas de programación basado en Linux. Luego puede instalar VirtualBox en su Mac, crear una máquina virtual Linux e instalar las herramientas de desarrollo ARM en la máquina virtual de Linux. Asegúrese de que cuando compre un kit de desarrollo ARM, venga con la CPU ARM, la placa completa de desarrollo/prueba, los cables USB para la transferencia/depuración del software y la cadena de herramientas completa de Linux. Puede encontrar estos kits por menos de $ 99.

+1

Cómo ¿Eso lo ayuda a ejecutar cualquiera de sus códigos en su iPhone como un binario? – Strelok

+2

No es así, pero si quiere escribir y depurar código de ensamblado ARM irá mucho más lejos con un kit de desarrollo de ARM adecuado. Y si no le gusta, puede revenderlo a diferencia de su membresía de desarrollador de iOS. – Jacek

+0

Si aún no es un desarrollador de iOs, no es la plataforma para empezar. Estoy de acuerdo con Jacek. –

2

Incluso sin un certificado de firma de código, creo que debería ser capaz de ir al menú emergente esquema (el lado derecho de la misma) y seleccione "iOS Device"

Una vez hecho esto, entonces puede elegir cualquier archivo .c o .m (o .cpp o .mm) en su proyecto, abra el editor asistente y elija "Ensamblaje" desde la barra de inicio del editor asistente. Luego puede ver el código fuente y el código de ensamblado uno al lado del otro.

O simplemente puede ir a menú de productos y generar una salida -> Montaje de

Puede que le resulte más fácil comenzar con el código C, donde las llamadas a funciones serán mucho más fáciles de seguir un principio de llamadas a métodos de Objective-C .

11

Copia de seguridad ...

¿Qué estás tratando de aprender? ¿Montaje de brazo o programación de iOS? Elija uno ...

¿Tiene alguna experiencia de montaje?

¿Qué es lo que cree que quiere aprender en el montaje de brazo? ¿Entrar y escribir algunas aplicaciones gui completas? Necesita aprender a poner lo que está en los registros add y y y xor y guardar las respuestas en los registros. luego lea y escriba algunas ubicaciones de memoria. Aprenda a usar la pila, hacer llamadas, etc. Luego, escriba sus aplicaciones en C o lo que sea y use asm para afinación manual o use sus habilidades de asm para depurar el compilador y/o el código. Escribir aplicaciones o sistemas operativos, etc. en ASM es para gente que quiere hacer una declaración, o tiene una razón específica, no para fines educativos.

Dale unos minutos o tal vez media hora, no debería tomar mucho tiempo para pasar, tal vez una tarde si lo tomas en serio.

http://github.com/dwelch67/lsasim mira el archivo learnasm.txt.

Es gratis, de código abierto, debería funcionar la mayoría de los lugares (Linux, Unix, Windows, etc. con un compilador de C), si aún no eres programador y no tienes herramientas básicas de compilación o programación, entonces ve a aprender algunos idiomas (echa un vistazo a python de la manera difícil http://learnpythonthehardway.org/), C por supuesto, y vuelve a trabajar en ensamblador. La cosa de arriba no es UN BRAZO, pero tiene muchas características familiares. Déjame saber qué tan bueno o malo fue un trabajo que hice.

Ahora bien, este es el brazo, pero el conjunto de instrucciones del pulgar:

https://github.com/dwelch67/thumbulator

No es un tutorial, pero una llanura, simulador sencillo conjunto, la instrucción. Debería ser obvio lo que está sucediendo en el simulador. Puedes agregar/modificar/imprimir lo que quieras ver para ayudar con la depuración. Puede mojarse los pies con registros ARM incrustados, pulgares, córtex-m, usando gcc, gnu assembler y llvm clang como compiladores cruzados. Tome uno de los ejemplos como está y luego comience a modificarlo.

Hay cierta inclinación hacia un lenguaje de ensamblaje de ARM unificado que funcione tanto en los núcleos basados ​​en ARM como en los núcleos basados ​​en thumb2. No es para todo el lenguaje ensamblador necesario, sino para lugares en los que es posible que desee escribir un módulo de código y no tener que tener una gran cantidad de datos si el código está obstruido. Sin duda, puedes ponerte los pies encima con eso y llevar parte de ese código directamente a instrucciones ARM completas de 32 bits en alguna otra plataforma. thumbulator solo es thumb, la instrucción común establecida entre los núcleos basados ​​en ARM y los núcleos basados ​​en thumb2, básicamente es el conjunto de instrucciones ARM portátil, escribe el código una vez, funciona en casi todos sus núcleos.

Verá en github Tengo una serie de otros proyectos con ejemplos que comienzan con el ensamblador y luego me meto en el código de arranque asm que conduce a C. Muchos, pero no todos, basados ​​en ARM. El hardware cuesta de $ 10 a $ 50 más o menos. Puedes, por ejemplo, ver lo de yagbat y obtener el simulador de avance visual boy gratuito y simular instrucciones de brazo de 32 bits o pulgar de 16 bits o lo que sea, y tener una pantalla simulada, etc. O si tienes el hardware gameboy o nds o nds lite y los cartuchos correctos puede ejecutar programas en el hardware real.

Todo lo que publico está allí para que las personas aprendan. Superando los temores de probar algo incrustado por primera vez, sin saber cómo cruzar la compilación, etc. Aprendí de muchos otros ejemplos similares y estoy devolviéndome el favor.

Si su objetivo es aprender la programación de iOS, obtenga el kit o lo que sea y aprenda usando el lenguaje que desee que aprenda, domine eso, aprenda las apis, etc. Luego, si hace algunas de las cosas del ensamblador anteriores a continuación, puede comenzar a pensar en realizar llamadas a funciones de ASM o ensamblador en línea, etc., desde sus programas iOS. ¿Cuánto ensamblador, tu elección? No esperaba ver aplicaciones escritas en ensamblador para esa plataforma. En su lugar, buscaría cómo puedo llamar a este código de ensamblaje desde mi aplicación ios o cómo hago el ensamblaje en línea. (no aprenda ensamblado en línea hasta que sea bueno en ensamblaje real).

No hay ninguna razón para pagar el acceso a un simulador, hay muchos simuladores de brazo por ahí, uno en mame, armulator de brazos en gdb y otros lugares, varios simuladores de gameboy advance y nintendo ds, etc. , etc., etc. Por supuesto, hay qemu-arm. hay más simuladores de los que probablemente esté dispuesto a tomarse el tiempo de probar, llevo unos 10 años más o menos y no los he probado todos.

ensamblaje de aprendizaje no es como C o python o Java, voy a escribir un juego de buscaminas para aprender este idioma. Está aprendiendo la mecánica de mover los bits, pequeños pasos, sin escribir aplicaciones utilizables. Por ejemplo, agregar dos números de 128 bits con un procesador de 16 bits es un valioso proyecto de lenguaje ensamblador. Multiplicando dos números, cualquier tamaño, con un procesador sin una instrucción multiplicada, ese es otro proyecto de aprendizaje de tipo ensamblador. sí, estoy de acuerdo en que PUEDES aprender esas cosas llamando a asm desde una aplicación de iOS, pero si aún no tienes el kit de desarrolladores de iOS y sabes cómo escribir aplicaciones de iOS, tienes mucho que aprender antes de empezar a pensar en el ensamblador.

Si estoy lejos de la marca con lo que me preguntaba, no hay problema, con mucho gusto eliminaré esta respuesta ...

Cuestiones relacionadas