Encienda un led con ARM en lenguaje ensamblador [cerrado]

-4

¿Cómo convierto este código C ++ para encender un LED en lenguaje ensamblador ARM para el LPC2124?

#include <lpc17xx.h>

void delay_ms(unsigned int ms)
{
    for (unsigned int i=0; i<ms; i++) 
        for (unsigned int j=0; j<20000; j++);
}

int main()
{
    LPC_PINCON -> PINSEL0 = 0x00000000;
    LPC_GPIO0  -> FIODIR  = 0x0001;

    while(1)
    {
        LPC_GPIO0->FIOSET = 0x0001;
        delay_ms(100);
        LPC_GPIO0->FIOCLR = 0x0001;
        delay_ms(100);
    }
}
    
pregunta Z.Gh

1 respuesta

4
  

¿Cómo convierto este código C ++ para encender un LED en ARM?   ¿Lenguaje ensamblador para el LPC2124?

No puedes. Otros pueden. Pero no puedes. (Alguien más puede hacerlo por usted. Pero entonces sería su esfuerzo y no el suyo). La razón es esta: para que usted pueda hacer esta pregunta, puedo agregar lo siguiente:

  1. No sabes el código de la máquina ARM.
  2. No conoce la codificación de ensamblaje ARM.
  3. Ni siquiera sabe dónde obtener una herramienta de ensamblador para ARM.
  4. No entiendes el proceso de vinculación.
  5. No entiendes lo que hace un localizador o cómo aplicar uno.
  6. Nunca ha mirado el equivalente de ensamblaje del código C / C ++.
  7. No sabes qué es un marco de pila (también conocido como registro de activación).
  8. No sabes cómo se pueden pasar los parámetros en un compilador determinado, ni sabes cómo hacer la pregunta.
  9. No sabe cómo interpretar los registros de hardware y cómo asignarlos de manera racional en su programa de ensamblaje.
  10. No sabes cómo podría verse el modelo de programa básico en una arquitectura de von Neumann o Harvard.
  11. No conoce el alcance, la duración de la variable, los montones, etc.
  12. Realmente no sabe cómo inicializar el hardware o, probablemente, cómo leer un diagrama de bloques funcional en una hoja de datos o incluso cómo leer una hoja de datos.

En resumen, bastante despistado. En su lugar, has estado dependiendo de todo este conocimiento que tienen los demás y de la cuchara que te han dado. Lo que significa que no puedes convertir ese código en ensamblaje. No ahora y no por un tiempo.

ARM a menudo está bien documentado pero también es intimidante en cuanto a asegurarse de tener todos los documentos necesarios, ya que a menudo se divide no solo en una variedad de documentos aislados funcionalmente, sino también a donde un fabricante puede recomendarle ARM en sí mismo por parte de la documentación que no proporcionan. Además, también es una buena idea aprovechar lo que otros han escrito. Por lo tanto, puede llevar algo de tiempo obtener todas las piezas necesarias, o incluso saber cuáles serán todas las piezas necesarias. Planea un tiempo para esto.

También necesitarás tener un código de ejemplo para estudiar. Ayuda mucho recoger algunas muestras y estudiarlas a medida que lee los otros documentos.

Necesitará manuales sobre las herramientas (ensamblador, vinculador, localizador, bibliotecario, depurador, etc.) y sus resultados generados y lo que esos resultados hacen por usted (archivos de mapas, archivos de objetos, archivos de biblioteca, etc.) es necesario comprender cómo cada parte de la cadena de herramientas funciona en conjunto para crear un resultado final. Necesitará otras herramientas para cargar el código en su dispositivo (aunque es posible que ya tenga estas a mano, es posible que deba comprender mejor cómo funcionan con la salida de una cadena de herramientas de ensamblador).

Y eso es solo el comienzo.

No quiero hacer que suene complicado. En realidad no es tan malo como parece. Es decir, si ya entiendes las ideas de algunas cosas, de todos modos. Si tiene un contexto de la experiencia anterior, va un largo, largo camino para permitirle concentrarse y organizar sus pasos adelante y repasarlos. Entonces es sólo "un proceso" de clases. Un paso, luego el siguiente. Pero aún es trabajo, incluso entonces.

Teniendo en cuenta lo poco que sabes, deducido de la forma en que escribes tu pregunta y la pregunta en sí, tienes un poco por delante. No dejes que eso te detenga. Puede valer la pena el tiempo. Pero pronto no convertirás ese código en ensamblaje por tu cuenta.

    
respondido por el jonk

Lea otras preguntas en las etiquetas