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

 
 
> Про IAR компилятор С
Dopler
сообщение Feb 6 2007, 14:45
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 23-04-05
Из: Таганрог
Пользователь №: 4 425



Здравствуйте.

Раньше никогда на C под железо не писал, только на ассемблере. Но жизнь показывает, что для ARM писать все на asm не актуально. Начал смотреть, какой код генерирует компилятор. Вот для примера две строки на C:

Код
      for(waiting_time = 1999; waiting_time >= 0; waiting_time--);

      for(waiting_time = 0; waiting_time <= 2000; waiting_time++);


Обе эти строки эквивалентны с точки зрения выполнения программы на С (т.е. будет 2000 шагов). Компилятор генерирует следующий код:

\ main:
\ ??main_0:
\ 00000000 CF00A0E3 MOV R0,#+207
\ 00000004 700E80E3 ORR R0,R0,#0x700
\ 00000008 000000EA B ??main_1
\ ??main_2:
\ 0000000C 010040E2 SUB R0,R0,#+1
\ ??main_1:
\ 00000010 000050E3 CMP R0,#+0
\ 00000014 FCFFFF5A BPL ??main_2
19
20 //AT91C_BASE_PIOB->PIO_CODR = 1 << 22;
21 for(waiting_time = 0; waiting_time < 2000; waiting_time++) ;
\ 00000018 0000A0E3 MOV R0,#+0
\ ??main_3:
\ 0000001C 7D0E50E3 CMP R0,#+2000
\ 00000020 F6FFFFAA BGE ??main_0
\ 00000024 010080E2 ADD R0,R0,#+1
\ 00000028 FBFFFFEA B ??main_3



Мне кажется, что выделенная строка явно лишняя, так как флаг нулевого значения выставляется и в предыдущей команде. Во-вторых, при декременте (в первом варианте) есть лишний переход. Таким образом, эквивалентность циклов на С достигнута искуственно. Возможно, это сделано специально (а возможно, человек пока способен генерировать все же лучший код)? Возможно, это где-то описанно или отключается?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aspID
сообщение Mar 19 2008, 07:03
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 343
Регистрация: 24-01-07
Из: Новосибирск
Пользователь №: 24 714



дабы не открывать новую ветку...

Помогите понять, зачем так сложно:
(time описана как unsigned long)

Код
//   80   time++;
        LDI     R30, time
        LDI     R31, 0
        LD      R16, Z
        LDD     R17, Z+1
        LDD     R18, Z+2
        LDD     R19, Z+3
        SUBI    R16, 255
        SBCI    R17, 255
        SBCI    R18, 255
        SBCI    R19, 255
        ST      Z, R16
        STD     Z+1, R17
        STD     Z+2, R18
        STD     Z+3, R19
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Dopler   Про IAR компилятор С   Feb 6 2007, 14:45
- - Newegor   Поиграйтесь с настройками оптимизации. При различн...   Feb 6 2007, 15:08
- - VAI   я, обычно, смотрю листинг, что у меня получилось, ...   Feb 6 2007, 16:58
|- - scifi   Забавно, а у меня комилятор в обоих случаях сгенер...   Feb 8 2007, 15:26
|- - Dopler   Цитата(scifi @ Feb 8 2007, 15:26) Приме...   Feb 8 2007, 16:02
|- - Сергей Борщ   Цитата(Dopler @ Feb 8 2007, 15:02) Если у...   Feb 8 2007, 17:28
- - scifi   ЦитатаСледующий вопрос, а как-нибудь вообще можно ...   Feb 8 2007, 20:49
|- - Dopler   Цитата(scifi @ Feb 8 2007, 20:49) Попробу...   Feb 8 2007, 22:21
|- - zltigo   Цитата(Dopler @ Feb 8 2007, 21:21) И при ...   Feb 8 2007, 22:50
- - Dopler   Похоже самый надежный способ, это тот, который рек...   Feb 9 2007, 08:51
- - scifi   Если я правильно понял, нужно получить малые задер...   Feb 9 2007, 11:37
|- - Dopler   Цитата(scifi @ Feb 9 2007, 11:37) Если я ...   Feb 9 2007, 12:36
||- - MrYuran   Цитата(Dopler @ Feb 9 2007, 15:36) Просто...   Mar 19 2008, 08:37
||- - IgorKossak   Цитата(MrYuran @ Mar 19 2008, 10:37) А фу...   Mar 19 2008, 08:48
|- - zltigo   Цитата(scifi @ Feb 9 2007, 10:37) Время в...   Feb 9 2007, 13:13
|- - Dopler   Цитата(zltigo @ Feb 9 2007, 13:13) Цитата...   Feb 9 2007, 14:40
|- - zltigo   Цитата(Dopler @ Feb 9 2007, 13:40) Я имел...   Feb 9 2007, 15:09
- - Dopler   Так #pragma optimize не позволяет повысить уровень...   Feb 9 2007, 13:02
- - Dopler   Вернемся к поиску оптимального кода. Приведенный в...   Feb 9 2007, 23:21
- - Dopler   А вообще, компилятор действительно не плох, он цеп...   Feb 9 2007, 23:32
|- - MALLOY2   Вот что у меня получилось IAR 4.41 оптимизция полн...   Feb 20 2007, 00:07
- - IgorKossak   Цитата(aspID @ Mar 19 2008, 09:03) дабы н...   Mar 19 2008, 08:03
- - aspID   Цитата(IgorKossak @ Mar 19 2008, 14:03) Н...   Mar 19 2008, 08:08
- - IgorKossak   Цитата(aspID @ Mar 19 2008, 10:08) Да, им...   Mar 19 2008, 08:13


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

 


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


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