raspberry ensamblador data assembler assembly arm

ensamblador - Learning ARM assembly



load store instructions (5)

El mejor recurso que he encontrado para aprender el lenguaje ARM Assembly desde cero es este tutorial: "http://www.coranac.com/tonc/text/asm.htm"

Está un poco desactualizado pero explica los conceptos básicos de ARM Assembly, y luego podrás leer los manuales de referencia oficiales de ARM para ver los detalles del dispositivo al que te diriges. Por ejemplo, si está apuntando a teléfonos inteligentes, entonces ARM v7 es un conjunto de instrucciones muy popular en estos días para que pueda enfocarse en eso y aprender sobre Thumb-2 y las tecnologías más nuevas. O si apunta a microcontroladores incrustados que solo cuestan unos pocos dólares, hay algunas características ligeramente diferentes disponibles, etc.

Durante este año, habrá un par de computadoras portátiles multitáctiles de menos de 600 € que contendrán Tegra2. Me brindan una buena excusa para aprender el lenguaje ensamblador ARM. Pero no tengo ni idea de dónde empezar, aparte de arm.com.

Para la primera tirada, pude levantar un emulador con una distribución de Linux. Pero, ¿qué emulador y distribución funcionarían mejor en este caso? Tener acceso a los archivos del sistema host estaría bien, así podría compilar y ejecutar binarios ARM directamente desde mi directorio personal.

No quisiera gastar mucho dinero en libros, así que necesitaría algunos ejemplos de código fuente de ensamblaje y una buena introducción gratuita al conjunto de instrucciones. Los indicadores del compilador gcc para compilar programas ARM en x86 también serían buenos, pero también podría descubrirlos yo mismo.


Los documentos de referencia ARM en realidad proporcionan una muy buena introducción al conjunto de instrucciones. Esos son un gran lugar para comenzar.

Dado que está escribiendo ensamblado (y por lo tanto, probablemente esté interesado en detalles de rendimiento de bajo nivel), querrá un simulador con precisión de ciclo o hardware real (o ambos). Además de las opciones de hardware que David Lively sugirió, también podría consultar un Beagle Board .

En cuanto a los compiladores, existen las herramientas RealView de ARM y GCC. El soporte para las características de hardware más nuevas puede estar algo más completo en las herramientas de ARM.


Obtenga una versión de evaluación de uno de los kits de herramientas de software de brazo que incluirá un emulador de software / depurador. Si está dispuesto a gastar unos cientos de dólares, obtenga una junta de evaluación de brazos ( Keil vende algunos). Puede probar su código en la placa a través de una interfaz JTAG y ver qué sucede en el hardware real.

Estos deberían hacer que vayas en la dirección correcta

Divulgación: trabajo para ARM.


Aprende con ejemplos ejecutables

Estoy trabajando en: https://github.com/cirosantilli/arm-assembly-cheat

caracteristicas:

  • se puede ejecutar desde un host Linux con el modo de usuario QEMU sin la necesidad de una placa ARM, sino también de forma nativa si tiene una placa como una Raspberry Pi
  • cubre tanto ARMv7 como ARMv8
  • buena configuración de GDB fuera de la caja, tanto en host como nativo
  • ha afirmado que muestran el número de la línea de montaje donde las cosas fallaron
  • utiliza la biblioteca estándar C para IO, lo que la hace OS portátil en teoría, y permite reutilizar fácilmente elementos como printf y memcpy

Comience con qemu para un emulador, distribuciones de Linux, y algunas placas dentro y fuera del mercado son compatibles. Vaya a sparkfun.com hay muchos tableros de brazo sub $ 50 para aprender a armar ensamblador, pero no necesariamente a Linux. Desea aprender arm7 o armar primero y luego pulgar segundo. El tablero de embestida (asumiendo que no es demasiado barato) es mejor que el beagleboard, ya que para hacer que el beagleboard sea útil necesitarás gastar otros $ 150 en cables y cosas de usb. El tablero de embestida tomó una semana o dos para llegar a los EE. UU. Desde el momento en que se ordenó. Por ese dinero, prefiero la tabla openrd o una computadora con un sheveva maravilloso. O para un sistema anterior, vaya con embeddedarm.com. si estás buscando un ensamblador no necesitarás un sistema con capacidad para linux, así que busca algo de sparkfun, arm7 basado en sam7 o lpc, ya hay uno con un puerto serial pero ya tienes que suministrarlo. Obtenga un jtag-tiny o tres de amontec, una gran herramienta para simplemente tener.

El avance de Game Boy es un buen lugar para aprender a programar también el brazo y el pulgar, el visualboy advance es un buen emulador. Puedo mostrarte cómo hacer un cable serial y encontrar el hardware para hacer otras cosas. Hay un linux El NDS (Nintendo DS) también es un buen sistema, pero comenzaría primero con el GBA. Evita el NDSi.

Descargo de responsabilidad: No tengo ninguna afiliación del brazo, pero tengo al menos uno de todos los descritos anteriormente, más algunas placas estelares (thumb2 aprende la corteza-m3 ÚLTIMO después del brazo y el pulgar).