Comenzando con el brazo

Variantes

Hay muchas variantes diferentes de la arquitectura ARM y las implementaciones que han evolucionado con el tiempo. La notación puede ser confusa. Por ejemplo, arm7 y armv7 son completamente diferentes. La primera es una implementación de CPU; el segundo es una arquitectura de CPU. La arquitectura, también llamada familia, es un conjunto de instrucciones de máquina (o ISA para arquitectura de conjunto de instrucciones) que generalmente son compatibles. Consulte: Lista de microarquitecturas ARM de Wikipedia para obtener más información.

Etiquetas relacionadas:

  • [tag:thumb] - la primera versión consistía en un conjunto reducido de instrucciones de 16 bits. thumb2, introducido con armv6, incluye una combinación de instrucciones de 16 y 32 bits, ampliado aún más en armv7 de modo que puede hacer la mayoría de las cosas que puede hacer el ARM ISA normal.
  • [tag:neon] - una extensión SIMD para CPU ARM
  • [tag:cortex-m] - un ISA incrustado de armv7 que solo admite thumb2.
  • [tag:cortex-a] - la versión de aplicación de armv7 ISA.
  • [tag:arm64] - la arquitectura del octavo brazo (armv8) incluye registros de 64 bits.
  • [tag:trust-zone]: una función de seguridad en algunas CPU armv6, armv8 y armv7.
  • [tag:amba] - especificación de bus o interconexión utilizada entre CPU y periféricos.

Existen otras etiquetas específicas de CPU, como [tag:cortex-m3]. A menudo, esas publicaciones se aplican a otras CPU cortex-m y/o es importante entender la diferencia entre las versiones. Además, las CPU futuras más nuevas pueden extender una CPU específica y las preguntas en esa etiqueta pueden ser relevantes.

Si solo está publicando en la etiqueta [tag:arm], intente dar algunos detalles sobre el sistema que está utilizando.

Construya y ejecute el ensamblaje ARM

Para ejecutar el código ensamblador ARM, necesitará una máquina con un procesador ARM.

Si está en Linux, puede usar los siguientes comandos para compilar su programa:

as -o prog_object.o my_prog_source.s

Enlace para obtener el ejecutable:

ld -o ejecutar_prog prog_objeto.o

Ejecutar usando:

./ejecutar_prog

Si ejecuta echo $? devolverá el valor almacenado en R0