¿Hay alguna diferencia entre las instrucciones de ensamblaje de las MCU ARM de dos corporaciones diferentes?

4

Tengo curiosidad por saber, ¿hay alguna diferencia entre las instrucciones de ensamblaje de las MCU ARM de dos empresas diferentes? Por ejemplo, entre un Cortex-M3 / 4 de NXP y TI o ST u otras corporaciones.

Algunos de mis amigos me dicen que no tienen diferencia. ¿Es eso correcto?

    
pregunta Roh

3 respuestas

13

Creo que lo correcto es decir que para una arquitectura determinada, como la arquitectura ARMv7-M del núcleo Cortex-M3, el conjunto de instrucciones es el mismo para todos los procesadores. Sin embargo, el comportamiento de algunas instrucciones puede variar debido a la funcionalidad definida por la implementación (es decir, opcional) en el procesador. Las instrucciones que intentan acceder a capacidades opcionales que no están implementadas en un procesador en particular pueden causar excepciones.

Para encontrar las funciones que pueden ser definidas por la implementación, busque el Manual de referencia de arquitectura ARM adecuado para IMPLEMENTACIÓN, en todas las capitales.

    
respondido por el Joe Hass
3

Los procesadores dentro de la misma familia (por ejemplo, Cortex M3) deben tener las mismas instrucciones, pero las diferentes familias tienen instrucciones diferentes. El ARM original usó un conjunto de instrucciones de 32 bits, luego apareció una versión que podía cambiar entre el modo "ARM" y el modo "Pulgar", y este último implementó un conjunto más pequeño de instrucciones de 16 bits. Un trabajo que toma la mitad nuevamente de las instrucciones de Thumb que tomaría las instrucciones ARM tomará aproximadamente la mitad de la ejecución de modo Thumb como el modo ARM, pero encajará en 3/4 del espacio.

Muchos procesadores más nuevos no tienen ningún modo de 32 bits, pero algunos pueden combinar dos palabras de instrucción consecutivas de tal manera que den como resultado la mayoría de las instrucciones del conjunto de instrucciones ARM de 32 bits, más un poco mas. Tenga en cuenta que algunas instrucciones ARM de 32 bits no están implementadas. El efecto neto es que no hay un procesador que pueda realizar cada instrucción ARM; diferentes familias ARM tienen diferentes conjuntos de instrucciones disponibles para ellos.

    
respondido por el supercat
1

Hay una serie de variaciones diferentes en el conjunto de instrucciones ARM (consulte enlace para obtener más información) y diferentes proveedores. Las partes pueden soportar diferentes subconjuntos.

A modo de ejemplo, no hay instrucciones de división de enteros en ARMv6; Es opcional en algunas versiones de ARMv7, obligatorio en otras; y presente en ARMv8.

Además, un proveedor que elabora su propia CPU con licencia ARM puede, en principio, agregar o eliminar las instrucciones que les interesen.

    
respondido por el Russell Borogove

Lea otras preguntas en las etiquetas