Assemblée en ligne: Passage des pointeurs à une fonction et l'utiliser dans cette fonction dans l'assemblage

StackOverflow https://stackoverflow.com/questions/3678452

Question

J'utilise processeur ARM / Cortex-A8 plate-forme.

J'ai une fonction simple où je dois passer deux pointeurs à une fonction. Ces pointeurs sont utilisés plus tard dans cette fonction qui a seulement mon code assembleur en ligne Ce plan est que pour atteindre des performances.

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);
}

Merci

Était-ce utile?

La solution

En supposant que vous utilisez un ABI normale ARM, ces deux paramètres seront transmis dans R0 et R1. Voici un exemple rapide montrant comment copier les octets de la mémoire tampon de input dans la mémoire tampon de output (syntaxe 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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top