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

 
 
> Компиляторы: выполняется ли оптимизация по умолчанию?
job_andrey
сообщение Dec 30 2008, 14:49
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 30-12-08
Пользователь №: 42 852



Требуется получить машинный код, в котором для каждого его куска можно найти соответствующий кусок в исходном коде (на С). Т.е. в генерируемом компилятором машинном коде не должны присутствовать какие-либо неявные вставки, не имеющие соответствующего отображения исходном коде (вроде проверки границ массивов), и наоборот ничто не должно быть отрезано.

В связи с этим возникает вопрос, когда и как компиляторы выполняют оптимизацию?
1. Если убрать все ключи оптимизации компилятора, будет ли выполнятся какая-либо оптимизация по умолчанию?
2. На каких этапах выполняется оптимизация: до преобразования в ассемблерный код и/или после?

Вообще это нужно применительно к Wind River и TI Code Composer Studio, но полезной будет информация о любых компиляторах.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
HARMHARM
сообщение Dec 30 2008, 19:05
Сообщение #2


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Цитата(job_andrey @ Dec 30 2008, 16:49) *
Требуется получить машинный код, в котором для каждого его куска можно найти соответствующий кусок в исходном коде (на С). Т.е. в генерируемом компилятором машинном коде не должны присутствовать какие-либо неявные вставки, не имеющие соответствующего отображения исходном коде (вроде проверки границ массивов), и наоборот ничто не должно быть отрезано.
Это и есть "без оптимизации".
Цитата
1. Если убрать все ключи оптимизации компилятора, будет ли выполнятся какая-либо оптимизация по умолчанию?
Читайте документацию на компилятор. IAR по умолчанию оптимизирует "слегка" (по скорости).
Цитата
2. На каких этапах выполняется оптимизация: до преобразования в ассемблерный код и/или после?
Хм. Имхо во время "преобразования в ассемблерный код". То, что Вы получите в .lst и в .hex, есть конечный продукт работы компилятора; все оптимизации уже сделаны до того. Линкер ничего не оптимизирует в коде.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Dec 30 2008, 20:10
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(HARMHARM @ Dec 30 2008, 23:05) *
Это и есть "без оптимизации".
Читайте документацию на компилятор. IAR по умолчанию оптимизирует "слегка" (по скорости).
Хм. Имхо во время "преобразования в ассемблерный код". То, что Вы получите в .lst и в .hex, есть конечный продукт работы компилятора; все оптимизации уже сделаны до того. Линкер ничего не оптимизирует в коде.


Вы форум почитайте внимательно (http://electronix.ru/forum/index.php?showtopic=57108). Там приводились примеры, что это справедливо не для всех современных компиляторов/линкеров. Может для IAR это и работает, но автор ветки спрашивал вообще о компиляторах.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 12th August 2025 - 21:57
Рейтинг@Mail.ru


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