gcc расширенный возврат asm - PullRequest
       6

gcc расширенный возврат asm

0 голосов
/ 04 сентября 2018

Как мне добиться записи в место назначения указателя вместо возврата значения из вызова функции, такого как:

/*no return function*/
static inline void mac(int64_t *output, in32_t a, int32_t b){
    __asm__ ("madd %0,%0,%1,%2"       
             //madd E[c],E[d],D[a],D[b] -> E[c]=E[d]+(D[a]*D[b])

            /*OUTPUTS*/
            : "+m" (*output)          
            /*------------------------------------------------------------------
            m as "output" is a pointer to some memory?
            what constraint needs to be here? 
            extended register pair E[c],E[d] is needed in the madd instruction 
            -> c+=a*b is translated to madd %%e6,%%e6,%dX,%dY with X,Y some data
            registers....
            ------------------------------------------------------------------*/

            /*INPUTS*/
            : "r" (a), "r" (b)
            );
}

Я не могу найти это в онлайн-документации ( ссылка ).

Проблема, которая также возникает, когда я хочу отладить, состоит в том, что функция не скомпилирована (я не могу войти в нее), так как компилятор, вероятно, думает, что в функции вообще ничего не делается, и он просто пропускает ее?

...