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

 
 
> ПОМОГИТЕ C IAR
DeXteR
сообщение Jan 19 2006, 11:40
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 2-08-05
Из: Одесса
Пользователь №: 7 287



Помогите Плиззз

ИАРовский компилятор уомпилит код на Си неправильно следушим образом
Код следующий
Код
      switch  (TWSR&0x7F)
      {

    case 0x60:
      {
      Temp = TWDR;
      }
    break;

    case 0x68:
      asm("nop");
    break;

    case 0x70:
      asm("nop");
    break;

    case 0x78:
      asm("nop");
    break;

    case 0x80:
      asm("nop");
    break;

    case 0x88:
      asm("nop");
    break;
    default:
      asm("nop");

      }


Из астудио Дизасемблера получил следующие

Код
103:            switch  (TWSR&0x7F)
+000001D7:   B101        IN      R16,0x01         In from I/O location
+000001D8:   770F        ANDI    R16,0x7F         Logical AND with immediate
+000001D9:   5800        SUBI    R16,0x80         Subtract immediate
+000001DA:   F0A9        BREQ    PC+0x16          Branch if equal
+000001DB:   5008        SUBI    R16,0x08         Subtract immediate
+000001DC:   F0A9        BREQ    PC+0x16          Branch if equal
+000001DD:   5D08        SUBI    R16,0xD8         Subtract immediate
+000001DE:   F039        BREQ    PC+0x08          Branch if equal
+000001DF:   5008        SUBI    R16,0x08         Subtract immediate
+000001E0:   F049        BREQ    PC+0x0A          Branch if equal
+000001E1:   5008        SUBI    R16,0x08         Subtract immediate
+000001E2:   F049        BREQ    PC+0x0A          Branch if equal
+000001E3:   5008        SUBI    R16,0x08         Subtract immediate
+000001E4:   F049        BREQ    PC+0x0A          Branch if equal
+000001E5:   C00E        RJMP    PC+0x000F        Relative jump
108:            Temp = TWDR;
+000001E6:   B103        IN      R16,0x03         In from I/O location
+000001E7:   9300006B    STS     0x006B,R16       Store direct to data space
+000001E9:   9508        RET                      Subroutine return
113:            asm("nop");
+000001EA:   0000        NOP                      No operation
+000001EB:   9508        RET                      Subroutine return
117:            asm("nop");
+000001EC:   0000        NOP                      No operation
+000001ED:   9508        RET                      Subroutine return
121:            asm("nop");
+000001EE:   0000        NOP                      No operation
+000001EF:   9508        RET                      Subroutine return
125:            asm("nop");
+000001F0:   0000        NOP                      No operation
+000001F1:   9508        RET                      Subroutine return
129:            asm("nop");
+000001F2:   0000        NOP                      No operation
+000001F3:   9508        RET                      Subroutine return
132:            asm("nop");
+000001F4:   0000        NOP                      No operation
136:      }
+000001F5:   9508        RET                      Subroutine return


Оптимизация кода в компиляторе отключена

Я писать на Си толька учусь ...
Может гдето ошибка ?? Или глюк ??
Как бороться ??

Спасибо !!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DeXteR
сообщение Jan 20 2006, 09:38
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 2-08-05
Из: Одесса
Пользователь №: 7 287



Хотел задать ещо один вопросс
При выполнении программы писаногй на Си АВРка выполняет такие подпрограммы как
__low_level_init
__segment_init
и т. д.

Есть надобность чтоб Атмега выполнила действия
как можно раньше после старта
раньше чем попадет на main()

Как заставить программу на Си проанализировать побыстрее например флаги регистра
MCUCSR (говорящие об источноке сбросса) ???
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- DeXteR   ПОМОГИТЕ C IAR   Jan 19 2006, 11:40
- - solidreg   Ведь всё же хорошо. А в чём проблема?   Jan 19 2006, 11:56
- - DeXteR   Цитата(solidreg @ Jan 19 2006, 15:56) Вед...   Jan 19 2006, 12:01
- - GxOST   главное - результат! а он именно тот, который...   Jan 19 2006, 12:22
- - DeXteR   Цитата(GxOST @ Jan 19 2006, 16:22) главно...   Jan 19 2006, 12:30
- - AndyBig   Еще как попадем Считаем: 000001D9: 5800 SUBI R16...   Jan 19 2006, 12:36
- - DeXteR   Простите за безпокойство Все понял =) ДОЦЕН ТУПОЙ   Jan 19 2006, 12:41
- - Георгий   Имей ввиду, компилятор компилит не в том порядке, ...   Jan 19 2006, 12:43
- - AndyBig   ЦитатаКак заставить программу на Си проанализирова...   Jan 20 2006, 10:47
- - DeXteR   Добрый день ! Мой IAR на строчку Код ADC_...   Jan 26 2006, 12:08
|- - KRS   Цитата(DeXteR @ Jan 26 2006, 15:08) Добры...   Jan 26 2006, 12:12
- - DeXteR   Цитата(KRS @ Jan 26 2006, 16:12) Цитата(D...   Jan 26 2006, 12:18
|- - KRS   Цитата(DeXteR @ Jan 26 2006, 15:18) Цитат...   Jan 26 2006, 12:25
- - DeXteR   Всем огромное спасибо за помощь и наставления. Во...   Jan 27 2006, 08:43
- - unichorn   Можно Только если используеш глобальные переменн...   Jan 27 2006, 09:54
- - DeXteR   Использую толька глобальные - памяти много =) stat...   Jan 27 2006, 11:43
|- - defunct   Цитата(DeXteR @ Jan 27 2006, 13:43) Испол...   Jan 28 2006, 01:55
- - unichorn   DeXteR, а ты случаем не во ВНИИФТРИ сидиш? А то кт...   Jan 27 2006, 13:27
- - DeXteR   Цитата(unichorn @ Jan 27 2006, 17:27) DeX...   Jan 27 2006, 14:59
- - unichorn   Аналогично. Интересные книги по прграмированию най...   Jan 27 2006, 15:26
- - unichorn   Большое количество глобальных переменных использов...   Jan 27 2006, 15:49
- - DeXteR   Цитата(unichorn @ Jan 27 2006, 19:26) Ана...   Jan 27 2006, 19:12
|- - Old1   Цитата(DeXteR @ Jan 27 2006, 23:12) Каким...   Jan 28 2006, 11:40
- - DeXteR   Всем огромное спасибо за советы и разъяснения =)   Jan 28 2006, 17:30


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

 


RSS Текстовая версия Сейчас: 28th July 2025 - 01:37
Рейтинг@Mail.ru


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