Встроенная сборка: передача указателей на функцию и используя ее в этой функции в сборке

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

Вопрос

я использую Процессор ARM / CORTEX-A8 Платформа.

У меня есть простая функция, где я должен пройти два указателя на функцию. Эти указатели позже используются в этой функции, в которой есть только мой код встроенного монтажа, этот план только для достижения производительности.

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

Спасибо

Это было полезно?

Решение

Предполагая, что вы используете обычную ABI ABI, эти два параметра будут переданы в R0 а также R1. Отказ Вот быстрый пример, показывающий, как скопировать байты из input буфер к тому output Буфер (синтаксис 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top