ostrovv 0 17 декабря, 2013 Опубликовано 17 декабря, 2013 · Жалоба Дорого всем . . . 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 не нашел . . . Спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 136 17 декабря, 2013 Опубликовано 17 декабря, 2013 · Жалоба почему компилятор заменяет регистры, в последних двух командах (r4-r2), и как отключить в настройках компилятора . . .Это либо ошибка ассемблера либо ошибка дизассемблера. Вы пробовали анализировать код команды? Из него будет видно, кто виноват. Ассемблер не имеет права подменять регистры. Т.е. в любом случае надо писать баг-репорт Атмелу и либо ждать исправления, либо разбираться в исходниках и править самому. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ostrovv 0 20 декабря, 2013 Опубликовано 20 декабря, 2013 · Жалоба Это либо ошибка ассемблера либо ошибка дизассемблера. Вы пробовали анализировать код команды? Из него будет видно, кто виноват. Ассемблер не имеет права подменять регистры. Т.е. в любом случае надо писать баг-репорт Атмелу и либо ждать исправления, либо разбираться в исходниках и править самому. да, спасибо, чет затупил, команда для двойного слова Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться