Assemblée en ligne: Passage des pointeurs à une fonction et l'utiliser dans cette fonction dans l'assemblage
-
01-10-2019 - |
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
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