Pregunta

Estoy usando procesador ARM / Cortex-A8 plataforma.

tengo una función simple en el que tengo que pasar dos punteros a una función. Estos indicadores se utilizan más tarde en esa función que sólo tiene mi código ensamblador en línea Este plan es sólo para conseguir un rendimiento.

function(unsigned char *input, unsigned char *output)
{
     // What are the assembly instructions to use these two pointers here?
     // I will inline the assembly instructions here
}

main()
{
    unsigned char input[1000], output[1000];

    function(input, output);
}

Gracias

¿Fue útil?

Solución

Si se asume que está utilizando una normal de ARM ABI, se pasará esos dos parámetros en R0 y R1. Aquí está un ejemplo rápido que muestra cómo copiar los bytes de la memoria intermedia input a la memoria intermedia output (sintaxis gcc):

.text
.globl _function

_function:
   mov  r2, #0        // initialize loop counter
loop:
   ldrb r3, [r0, r2]  // load r3 with input[r2]
   strb r3, [r1, r2]  // store r3 to output[r2]
   add  r2, r2, #1    // increment loop counter
   cmp  r2, #1000     // test loop counter
   bne  loop
   mov  pc, lr
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top