tectijuana / interfaz.old

Lenguajes de Interfaz para ISC
GNU General Public License v3.0
30 stars 46 forks source link

2.1 Programación básica #24

Closed IoTeacher closed 7 months ago

IoTeacher commented 8 months ago

INTEGRACION DE ARM Assembly como MACRO con Leng. C

asciicast

Para integrar código de ARM32 assembly con C, es importante seguir una convención de llamadas que permita la comunicación entre ambos lenguajes. A continuación, te proporciono un ejemplo simple de cómo hacer esto. El ejemplo consistirá en una función de assembly que suma dos números y una función en C que llama a esta función de assembly.

Primero, creemos la función de assembly que suma dos números. Esta función recibirá dos argumentos y retornará la suma de ambos. La función podría llamarse sumar, y su código en assembly se vería así:


.global sumar
.type sumar, %function

sumar:
    @ Argumentos:
    @   r0 - primer número
    @   r1 - segundo número

    ADD r0, r0, r1  @ Suma r0 y r1, resultado en r0
    BX lr           @ Regresa a la función llamadora

Ahora, necesitas escribir el código en C que llame a esta función de assembly. Para hacer esto, declara un prototipo de la función sumar en tu código C, de modo que el compilador sepa de su existencia y pueda manejar correctamente la llamada. Luego, puedes llamar a sumar desde tu función principal en C o desde cualquier otra parte de tu código C.

El código en C que hace uso de la función sumar se vería así:

#include <stdio.h>

// Prototipo de la función assembly
extern int sumar(int a, int b);

int main() {
    int resultado;

    // Llama a la función assembly
    resultado = sumar(10, 20);

    printf("El resultado es: %d\n", resultado);
    return 0;
}

Para compilar y enlazar estos dos archivos, puedes usar un Makefile simple que utilice gcc para el código C y as para el assembly, o directamente en la línea de comandos si prefieres. Asegúrate de tener ambos archivos en el mismo directorio y de reemplazar y con los nombres de tus archivos reales.

En la línea de comandos, podrías compilar y enlazar tus archivos de la siguiente manera:

as -o sumar.o sumar.s          # Compila el código assembly
gcc -o sumar_c.o -c sumar.c    # Compila el código C
gcc -o programa sumar.o sumar_c.o   # Enlaza ambos objetos y genera el ejecutable

Este es un ejemplo básico para mostrarte cómo integrar ARM32 assembly con C. Puedes expandir esto para incluir llamadas a funciones más complejas y pasar diferentes tipos de datos entre C y assembly.

IoTeacher commented 7 months ago

Image

Integrar código de ARM32 assembly con C# en un entorno como Raspberry Pi con Linux es un poco más complejo que hacerlo con C, principalmente porque C# se ejecuta en un entorno de ejecución administrado (como .NET Core o .NET Framework) y no tiene una interoperabilidad directa con el código de assembly de la manera en que C lo tiene. Sin embargo, puedes lograr una integración indirecta utilizando la interoperabilidad de plataforma de C# (P/Invoke) para llamar a funciones escritas en C, que a su vez pueden llamar a código de assembly.

IoTeacher commented 7 months ago

Image

Se presentan 8 temas sugeridos para exposiciones sobre ARM32, adecuados para equipos de tres integrantes. Cada tema incluye un breve marco teórico y una idea para un programa ejemplo que claro pueden Uds. adaptar, cada equipo debería alojar su código en GitHub PAGES y asegurarse de que sea compilable y depurable usando GDB en un entorno como Raspberry Pi OS en ARM32 bits.

1. Introducción a ARM32 y el entorno de desarrollo

2. Estructura básica de un programa en Assembly y ciclo de compilación

3. Uso de registros y convenciones de llamadas

4. Instrucciones de control de flujo y estructuras de control

5. Manipulación de memoria y arrays

6. Llamadas al sistema y entrada/salida

7. Integración de código Assembly con C

8. Depuración de programas en Assembly con GDB

La parte práctica debe involucrar la compilación del código en Gist y su posterior depuración en GDB, mostrando cómo solucionar problemas comunes y cómo usar GDB para entender mejor el funcionamiento del programa.

ELECCION DEL TEMA:

1.- Estudiante da click link "grupal" de GitHub 2.- Pone nombre a el equipo (encargo ser moderado el nombre) 3.- En caso que Ud sea en numero 9 en acceder y no logra teclear nombre del equipo, se considera uno miembro seleccionar que equipo pertenecer. 4.- Listo ya sea lider o parte del equipo, localizar a los colegas por el nickname.

Todo es dinámico la elección por GitHub Classroom

https://classroom.github.com/a/LubHiFNh

NOTA: Dejese llevar por el RANDOM() de esta exposicion

IoTeacher commented 7 months ago

SELECCIONA EL TEMA (no duplicados) solo 8 entradas

JebBarbas commented 7 months ago

HolaMundo 1. Introducción a ARM32 y el entorno de desarrollo

goosepink commented 7 months ago
  1. Uso de registros y convenciones de llamadas LosEsoTilin .
michdiaz commented 7 months ago

Orejitas Chismosas, tema 2

Jesusrlc commented 7 months ago

Equipo huevos rancheros

  1. Instrucciones de control de flujo y estructuras de control
JosueJCC02 commented 7 months ago

los residentes tema 6

MigOrozco commented 7 months ago

tema 5. Equipo FarsaFC Manipulación de memoria y arrays

IoTeacher commented 7 months ago

7 y 8 quedan

Sark1223 commented 7 months ago

8. Depuración de programas en Assembly con GDB

Burgie80 commented 7 months ago

7. Integración de código Assembly con C

Equipo Burgies