Перейти к содержанию
    

ostrovv

Новичок
  • Постов

    3
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные ostrovv


  1. Это либо ошибка ассемблера либо ошибка дизассемблера. Вы пробовали анализировать код команды? Из него будет видно, кто виноват. Ассемблер не имеет права подменять регистры. Т.е. в любом случае надо писать баг-репорт Атмелу и либо ждать исправления, либо разбираться в исходниках и править самому.

     

    да, спасибо, чет затупил, команда для двойного слова

  2. Дорого всем . . .

     

    File main.c
    
    #include <avr32/io.h>
    extern void fun(void);
    int main(void)
    {
        while(1)
        {
            fun();
        }
    }
    
    File  Assembly1.s
    
    #include <avr32/io.h>
    .global fun
        fun:
          mov     r2, 0
          mov     r3, 0
          st.d    r0++, r2
          cp      r0, r1
          ld.d    r4, r2++
          st.d    r0++, r4

     

    дизассемлер при отладке

      mov     r2, 0
    8000010C  mov R2, 0         
          mov     r3, 0
    8000010E  mov R3, 0         
          st.d    r0++, r2
    80000110  st.d R0++, R1         
          cp      r0, r1
    80000112  cp.w R0, R1         
          ld.d    r4, r2++
    80000114  ld.d R2, R2++         
          st.d    r0++, r4
    80000116  st.d R0++, R2

     

    подскажите материал/ссылку/документик где описывается почему компилятор заменяет регистры, в последних двух командах (r4-r2), и как отключить в настройках компилятора . . .

    в всяко разных доках Atmel не нашел . . .

     

    Спасибо

     

×
×
  • Создать...