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

    

Ассемблер AVR32

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

 

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 не нашел . . .

 

Спасибо

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
почему компилятор заменяет регистры, в последних двух командах (r4-r2), и как отключить в настройках компилятора . . .
Это либо ошибка ассемблера либо ошибка дизассемблера. Вы пробовали анализировать код команды? Из него будет видно, кто виноват. Ассемблер не имеет права подменять регистры. Т.е. в любом случае надо писать баг-репорт Атмелу и либо ждать исправления, либо разбираться в исходниках и править самому.

 

Поделиться сообщением


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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация