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

 
 
 
Reply to this topicStart new topic
> Ассемблер AVR32, Вопрос по компилятору AVR32-GCC
ostrovv
сообщение Dec 17 2013, 08:38
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 19-06-12
Пользователь №: 72 398



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

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

Спасибо
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 17 2013, 10:19
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(ostrovv @ Dec 17 2013, 10:38) *
почему компилятор заменяет регистры, в последних двух командах (r4-r2), и как отключить в настройках компилятора . . .
Это либо ошибка ассемблера либо ошибка дизассемблера. Вы пробовали анализировать код команды? Из него будет видно, кто виноват. Ассемблер не имеет права подменять регистры. Т.е. в любом случае надо писать баг-репорт Атмелу и либо ждать исправления, либо разбираться в исходниках и править самому.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
ostrovv
сообщение Dec 20 2013, 04:53
Сообщение #3





Группа: Новичок
Сообщений: 3
Регистрация: 19-06-12
Пользователь №: 72 398



Цитата(Сергей Борщ @ Dec 17 2013, 14:19) *
Это либо ошибка ассемблера либо ошибка дизассемблера. Вы пробовали анализировать код команды? Из него будет видно, кто виноват. Ассемблер не имеет права подменять регистры. Т.е. в любом случае надо писать баг-репорт Атмелу и либо ждать исправления, либо разбираться в исходниках и править самому.


да, спасибо, чет затупил, команда для двойного слова
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 16th April 2024 - 21:31
Рейтинг@Mail.ru


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