|
|
  |
свежак KGP win32/arm/avr/mips/m68k, GNU tools chain |
|
|
|
Mar 30 2011, 11:39
|

Группа: Участник
Сообщений: 13
Регистрация: 20-10-07
Пользователь №: 31 533

|
lto таки заработало  . как оказывается в LDFLAGS кроме -flto надо еще и флаги оптимизации добавлять. добавил в makefile Код LDFLAGS += -flto $(OPTIMIZATION) CFLAGS += -flto и вот оно, счастье. Код с -Os -combine -fwhole-program (gcc version 4.5.0 20091115 т.к. в 4.7 -combine убрали): text data bss 16665 40 4232
c -Os -flto (gcc gcc version 4.7.0 20110328) text data bss 16113 40 4240
|
|
|
|
|
Mar 30 2011, 13:19
|

Частый гость
 
Группа: Участник
Сообщений: 123
Регистрация: 28-06-05
Из: Тула
Пользователь №: 6 361

|
У меня на одном проекте LPC2212 (включая 87к двоичных данных): Код -O1 yagarto 4.51 - 110040 байт yagarto 4.52 - 110036 байт kgp 4.7 - 108929 байт -Os kgp без LTO 4.7 - 107578 байт kgp c LTO 4.7 - 103344 байт На другом проекте LPC2212 (включая 65к двоичных данных): Код -Os kgp без LTO - 87135 байт kgp c LTO - 82161 байт Отличная экономия  Да, кстати, проекты под TNKernel 2.6.
Сообщение отредактировал Bender - Mar 31 2011, 04:54
|
|
|
|
|
Mar 30 2011, 13:50
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912

|
приеду домой попробую тоже lto , но у меня какието траблы были, в коде ковырялся - бросил, не стал разбиратся. судя по резултату lto оптимизатор нехило код функций перекрутил через мясорубку. этож получается lto оптимизатор из 27к утрамбовал в 23к это если я не ошибаюсь 14 процентов - даже не верится. а код работает хоть? что характерно - сие шаманство возможно только для elf бинарников, токсть встраиваемый линкус и проги для него получится отплющить а вот winCE видимо курит солому. по поводу флагов оптимизации непонятно - как я понимаю они в elf объектники складываются на всякий случай либов секции dwarf либо еще кудато, поэтому lto-wraper и lto1 может их и сам вытащить... gcc мне напоминает В.Ленина - все для народа (для тех кто пламенный революционер и мелкобарыжнеческого элемента у кого бабла нет на иар  )
|
|
|
|
|
Mar 30 2011, 21:54
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 13-03-07
Пользователь №: 26 123

|
Что-то линкер из последней сборки для MIPS стал ругаться на инверсию атрибута в описании блока памяти в скрипте линкера.
MEMORY { kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x20000 }
../../../mips-kgp-elf/bin/ld.exe: invalid syntax in flags collect2: ld returned 1 exit status
Меняю ld.exe на предыдущий (4.6.0 от 25.07.2010) - все нормально компилируется.
|
|
|
|
|
Mar 31 2011, 10:58
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 13-03-07
Пользователь №: 26 123

|
MIPS - PIC32, скрипты для линкера от родного микрочиповского C32. С предыдущими сборками KGP все работало. А где можно посмотреть изменения для GCC 4.7, желательно прямой линк. Цитата(klen @ Mar 31 2011, 06:58)  2_Mitsufan мож синтаксис поменялся, нада доки посмотреть на binutils. но скорее всего косяг. а кокой mips пропрограмируете?
|
|
|
|
|
Mar 31 2011, 11:46
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912

|
2_Mitsufan дока по бинутилсам http://sourceware.org/binutils/docs-2.21по gcc http://gcc.gnu.org/onlinedocs/gcc-4.6.0/gcc/изменения 4.5->4.6 http://gcc.gnu.org/gcc-4.6/changes.htmlотличия в 4.7 пока нельзя описать(ну тоесть можно но доки такой не существует, правла есть местами описание куда двигается процесс) поскольку 4.7 это код где поживому правки вносятся. различия только для релизов публикуется (то у чего код заморожен). а если нада то все svn в виде диффов покажет. и как вам ядро M4K ? у меня есть теория что мипс есть наилучшая процессорная архитектура, только почемуто она не сильно в массы пропихивается. с другими сравнить можете хотябы по ощущениям. gcc должен для мипсов давать очень хороший код - архитектора ядра академическая. 2_demiurg_spb да планирую, темболее что в выходные то что собралось компиляло мой проект с dwarf2 и компиллер не падал, и я даже собирал для говновиндовса, и даже под варстудией тестил - но чтото мне там не понравилось я и не стал выкладывать. короче говоря я выложу сборку - а там посмотрим че получится. всетаки как я понял атмелу пипец со всех сторон. кстате что касается атмела вобщем то атмел достиг апофеоза маразма : http://www.terraelectronica.ru/news_postup.php?ID=2184 даже если они случайно нулик по ошибке сзади цены дописали - всервно атмелу кирдык. чтоб спастись атмел должен раздавать иструментальные средства с доплатой, килограммом травы, бутылкой водки и пирожком в придачу. и вообще, я раньше критически относился к потенциалу нашей родины и качеству людского матреиала... но вот "у них" ведь тоже есть перлы. один из последних это вебдизайн сайта ST Microelectronix ( www.st.com ) - это что с чем то... посмотрев это становится спокйно на наше тихое болото - нефига они нас не победят  ножки подломятся
|
|
|
|
|
Apr 4 2011, 09:51
|
Группа: Новичок
Сообщений: 4
Регистрация: 24-03-11
Пользователь №: 63 853

|
Добрый день. Пытаюсь писать под mips из под винды. После компиляции элементарной С программы в ассемблерном листинге функция main начинается с addiu sp,sp, -16. После выполнения данной команды процессор сваливается в исключение. Значение регистра sp до этого не трогал. Если оно изначально нулевое, то он попадает в конец области памяти, которая не существует физически(размер ОЗУ и ПЗУ меньше) Отсюда сделал вывод, что нужно инициализировать указатель стека. Как указать компилятору начало стека, области памяти(ОЗУ, ПЗУ)? Подозреваю что это делается в startup коде, но примеров под mips не нашел.
|
|
|
|
|
Apr 8 2011, 13:42
|
Профессионал
    
Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347

|
Цитата ставить весь MSYS нет необходимости, вы его всеравно не будете использовать при работе. изза 4 файлов ставить сотню другую, незачем http://klen.org/Files/DevTools/make_sh_rm_touch.7z только тех утилит что мспользуются при сборке проектов с помощью make закинул этот make в папку bin mingw-win32 - не запускается (вернее запускается но ничего не выводит в консоль и не выполняет Makefile). Из другой папки - нормально. Так и должно быть ?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|