реклама на сайте
подробности

 
 
> avr-gcc inline asm caveats
demiurg_spb
сообщение Dec 14 2009, 19:08
Сообщение #1


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Суть такая: написал процедурку для получения знака числа float.
Имеющаяся signbit(x) не устраивает, т.к. происходит call-ret.
Код
#define avr_fsign(x)                                                    \
(__extension__({                                                        \
    float   __value = (float)(x);                                       \
    uint8_t __result;                                                   \
    __asm__ __volatile__                                                \
    (                                                                   \
        "mov  %0,__zero_reg__"        "\n\t"                            \
        "sbrc %D1,7"                  "\n\t"                            \
        "inc  %0"                     "\n\t"                            \
        : "=r" (__result)             /* output operands */             \
        : "r" (__value)               /* input operands */              \
    );                                                                  \
    __result;                                                           \
}))
Всё бы ничего, но иногда компилится чушь.
Код
    ld r14,X+
    ld r15,X+
    ld r16,X+
    ld r17,X
    ...
    mov  r17,__zero_reg__
    sbrc r17,7
    inc  r17
Чаще нормально:
Код
    ld r14,Z
    ldd r15,Z+1
    ldd r16,Z+2
    ldd r17,Z+3
    mov  r24,__zero_reg__
    sbrc r17,7
    inc  r24
Подскажите в чём тут может быть дело?
Со списком clobbers есть сомнения. У меня его нет. По моему разумению он тут и не нужен.
Может я ошибаюсь?
PS: avr-gcc (WinAVR 20090313) 4.3.2 -Os

Отвечаю сам себеsmile.gif Надо было добавить значёк & в этой строке:
Код
        : "=&r" (__result)             /* output operands */             \

Понял ошибку благодаря этому.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 02:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01354 секунд с 7
ELECTRONIX ©2004-2016