Diferencias entre el Conjunto del BRAZO y el Conjunto x86 [cerrado]


Ahora voy a aprender ARM Assembly, a desarrollar para mi Windows Mobile 5 iPAQ, pero tengo algunas preguntas:

  • ¿Cuáles Son Las Principales Diferencias Entre El Ensamblaje del BRAZO y el Ensamblaje x86?
    • ¿Hay Alguna Diferencia En Las Interrupciones (Nuevos Tipos)?
      • ¿Cuáles Son Y Cuál Es El Significado De Ellos?
    • ¿El Mejor Ensamblador Para Compilar Y Dónde Obtenerlo?
  • ¿Dónde Puedo Encontrar Algunos Buenos Recursos?

2 answers

Diferencias principales:

  • ARM es una arquitectura de estilo RISC-las instrucciones tienen un tamaño regular (32 bits para ARM estándar y 16 bits para el modo Pulgar, aunque el pulgar tiene algunas instrucciones que mastican 2 ranuras de instrucciones')

  • Al menos a través de la arquitectura ARM v5 (no estoy seguro de lo que hace v6), el modelo de interrupción en ARM es muy diferente que en Intel : en lugar de empujar registros a la pila, el ARM se intercambia a un conjunto diferente de registros que 'sombrean' el set normal. El modo del procesador determina qué archivo de registro es visible(y no todos los registros son necesariamente sombreados). es un arreglo bastante complejo. Las arquitecturas ARM más nuevas (v7 de todos modos) tienen un modelo de interrupción que está más cerca del de Intel, donde los registros se empujan a la pila cuando se produce una interrupción.

La instrucción Arm tiene algunas características interesantes que no están en Intel:

  • las instrucciones tienen banderas condicionales incorporadas, por lo que cada la instrucción puede ejecutarse como un NOP si los indicadores de condición especificados no coinciden con el estado actual del indicador del registro de estado (esto se puede usar para evitar todos esos saltos alrededor de una o dos instrucciones que se ven a menudo en el ensamblaje de Intel).
  • el BRAZO tiene lógica de desplazamiento que se puede incrustar como parte de la instrucción. Así que cuando se utiliza un registro como un operando de origen, se puede cambiar como una parte intrínseca de la instrucción. Esto ayuda con la indexación de matrices, a veces con aritmética.

Por otro lado, el BRAZO no puede hacer mucho con la memoria directamente, excepto cargar y almacenar en ella. Intel assembly puede realizar más operaciones directamente en la memoria.

Tenga en cuenta que la versión de arquitectura ARM no se corresponde directamente con las versiones reales del procesador ARM; por ejemplo, si no recuerdo mal, el ARM7 es un procesador de arquitectura v5. Personalmente, encuentro esto mucho más confuso de lo que debería ser.

Las referencias de Arquitectura ARM son libres descargable desde http://www.arm.com . También sugiero obtener copias de Las guías de Hitex para varios microcontroladores ARM para un buen punto de partida.

Ha habido varias preguntas de Stackoverflow con respecto a los punteros para comenzar con ARM. Revisarlos te dará muchos buenos lugares para comenzar:

 48
Author: Michael Burr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:00:32

También debe darse cuenta de que ARM licencia su IP en lugar de producir chips. Un licenciatario puede configurar su microprocesador ARM core de varias maneras. Lo más importante w. r.t. su pregunta es que el núcleo ARM en sí define solo dos interrupciones IRQ y FIRQ, la mayoría de las veces, hay un controlador de interrupción específico del proveedor, por lo que necesita saber exactamente de quién se usa el microprocesador en su dispositivo si necesita saber cómo manejar interrupciones. Los modelos iPAQ han utilizado de diversas maneras Intel StongARM y procesadores XScale. Si desea desarrollar en ese nivel, debe descargar el manual de referencia del usuario para la parte específica.

Dicho esto, los servicios de interrupción y los controladores de dispositivo son proporcionados por el sistema operativo, por lo que probablemente no tenga que preocuparse por estos detalles de bajo nivel. De hecho, cuestionaría la elección del ensamblador como su lenguaje de desarrollo. Hay pocas razones para elegir ensamblador en lugar de C o C++, en ARM (el compilador casi seguramente lo superará en términos de código rendimiento). Además, en Windows Mobile, es probable que el lenguaje de nivel de aplicación más productivo sea C#.

 10
Author: Clifford,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-12 16:50:12