goto http://infocenter.arm.com a la izquierda debajo de contenido buscar arquitectura ARM. Y debajo de esos Manuales de Referencia. solía haber un solo ARM ARM (ARM Architecture Reference Manual) pero la familia ha crecido hasta el punto en que tuvieron que dividirlo en familias.
Los ARM ARM le mostrarán los conjuntos de instrucciones. Lo que creo que llaman el manual ARMv5 es el antiguo ARM ARM. Encontrará las instrucciones ARM (32 bits) y las instrucciones del pulgar (16 bits). Para cada instrucción, enumeran qué arquitectura lo admite, por lo que es posible que vea una instrucción ARMv5 que no es compatible con ARMv4 (ARMv4 a.k.a ARM7, como el popular núcleo ARM7TDMI). Las instrucciones para el pulgar son compatibles con ARMv4T y más reciente, etc.
Así está el conjunto de instrucciones básicas del brazo de 32 bits al que puede haber estado acostumbrado con nuevas instrucciones añadidas de vez en cuando y errores/restricciones corregidos (ldr r0, [ r0], etc.
La unidad de coma flotante ha tenido una o dos revisiones, la mayoría de los núcleos no tienen un fpu y los que tienen un fpu no significan que el proveedor del chip lo haya incluido en el chip. el fpa es el más viejo, el vfp es más nuevo y ahora es de neón. Si presta atención, todos estos pertenecen a la categoría de instrucciones genéricas del coprocesador. Pero no tiene que saber/usar la versión del coprocesador, ellos tienen alias para todo.
Hay/era algo de java/jazelle, la misma historia que algunos núcleos pueden tener como opción no significa que el proveedor lo incluyó.
Al menos dos conjuntos de extensiones thumb2 para el conjunto de instrucciones de pulgar. Antes de las extensiones thumb2, las instrucciones thumb eran todas de 16 bits y tenían una correlación de uno a uno con una instrucción ARM, tiene sentido que solo necesites un núcleo ARM, el decodificador traduce de la instrucción más pequeña a la instrucción ARM y la transmite al núcleo. Todas las instrucciones son de 16 bits, excepto la rama, y si observa ese patrón, puede decodificar fácilmente eso como dos instrucciones separadas de 16 bits. Tengo un simulador por cierto si quieres jugar con solo las instrucciones http://github.com/dwelch67/thumbulator. Entonces, deciden hacer que su microcontrolador sea más pequeño, en lugar de que todos usen el ARM7TDMI y consuman el tamaño y potencia del chip, los procesadores con capacidad thumb2 solo son pulgares, no admiten instrucciones ARM de 32 bits, no hay un núcleo ARM que las instrucciones pulgares se traducen a, etc. nuevo núcleo. El ARMv6-M también conocido como Cortex-m0 y Cortex-m1 toma el conjunto de instrucciones de pulgar y agrega algunas instrucciones de 32 bits para cerrar la brecha de rendimiento a ARM (el pulgar era más pequeño, pero un poco más lento que ARM si compiló el mismo código ambos, tomaron como 10-20% más instrucciones de mis experimentos para usar el pulgar). En teoría, thumb-2 (ARMv7-M) supera a ARM cuando y donde puede compararlos. Por alguna razón, el Cortex-m3 salió primero, que es ARMv7-M y tiene un montón de instrucciones thumb2 de 32 bits agregadas al conjunto de instrucciones del pulgar. Recientemente conté y ARMv6-M agregó como 20, ARMv7-M tiene como 140-150 instrucciones agregadas al conjunto de instrucciones base de pulgar. thumb2 es básicamente una longitud de palabra variable. Y nuevamente solo se ejecuta en la serie de cortex-m.Mirándolo, es casi como si hubieran reconstruido la instrucción ARM establecida nuevamente bajo el nombre pulgar. no completamente, pero recuperas muchas instrucciones de brazo, tres registras en lugar de dos, puedes alcanzar registros más altos y usar inmediatos, etc. Lo que esto causa es un deseo de escribir asm compilado para ARM y thumb/thumb2. Entonces se les ocurrió una sintaxis unificada. usted puede escribir una instrucción como
add r0,r1
Si montaje para el pulgar, que es la instrucción, si el montaje de brazo que lo convertirá a
add r0,r0,r1
para usted, en lugar de los errores de sintaxis. Debe especificar que está utilizando la sintaxis unificada, al menos con el ensamblador gnu binutils (gas).
Un conjunto igualmente importante de documentos son los manuales de referencia técnica, también en infocenter.arm.com. Cada núcleo tiene un trm, en realidad cada rev de cada núcleo tiene un TRM. Además, los artículos de costo adicional como los cachés L2 tienen su propio TRM, por cada rev. es importante averiguar qué núcleo compró/usó el proveedor del chip y si es posible la revisión (rev 2.0 r2p0, rev 1.0 r1p0, etc.) ya que hay diferencias de programación así como diferencias de errata entre ellos (¡no confíe en Linux como referencia! , es un gran desastre, cada vez que veo que otra compañía ha entendido mal y ha aplicado mal las diferencias núcleo/errata, es un desastre en este momento). A veces, el TRM incluye información de instrucciones, o pinta una imagen más clara de lo que ese núcleo admite y no admite. Los ARM ARM son genéricos y cubren toda la familia o varias familias de núcleos, donde el TRM es muy específico para un núcleo. Un ejemplo de confusión entre ARM ARM y TRM es que al mirar ARM ARM puede tener la impresión de que puede usar los modos BE-32 o BE-8 big endian, la realidad es que tiene uno u otro ARMv6 y más nuevo es BE-8, punto, acostúmbrate a él. ARMv5 y ARMv4 es BE-32 o antes de que ARMv6 acaba de llamar a big endian. Recomiendo NO usar Big Endian en un brazo a pesar de lo que piensas que puedes obtener de él. vaya con el modo nativo y se ahorrará un montón de trabajo y fracaso. Lo menciono por experiencia personal tratando de descubrir por qué los bits descritos en un ARM ARM simplemente no funcionaban en el núcleo que estaba usando.
Un núcleo de 64 bits se encuentra en algún punto de la fase de desarrollo, no me sorprendería si estuviera hecho y simplemente buscara a alguien que aprete el gatillo y lo use. En realidad, el documento ARMv8 está disponible, descargando ahora.
Respuesta corta infocenter.arm.com en ARM Architecture se encuentran todos los documentos que describen los diferentes conjuntos de instrucciones, así como las mejoras/adiciones a lo largo del tiempo a esos conjuntos de instrucciones.
Probablemente sea más correcto decir que los proveedores de chips tienen núcleos ARM con licencia. Como la mayoría de las compañías de chips no fabrican chips, contratan a alguien para fabricar chips, y tampoco fabrican el procesador ARM, compran el código de ARM y lo agregan al diseño de sus chips. –