Jump to content

    

Ассемблер 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 не нашел . . .

 

Спасибо

 

Share this post


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

 

Share this post


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

 

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this