Перейти к содержанию
    

GNU Tools for ARM Embedded Processors 4.8 - 2013q4-20131204

1) На чем, на каком коду, на каком проце сравнивалось? Чтобы понять откуда это 500 получилось.

2) Сравнивали с кейлом, иаром? На сколько больший код с gcc?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) На чем, на каком коду, на каком проце сравнивалось? Чтобы понять откуда это 500 получилось.

2) Сравнивали с кейлом, иаром? На сколько больший код с gcc?

Причём тут кейл и иар?

Ветка о GNU'тых средствах разработки...

 

Cравнивал на одном из своих проектов под stm32f103.

 

Для особо любопытных детали:

arm-gcc-none-eabi-4.7.4 размер секции text 28340

arm-gcc-none-eabi-4.8.4 размер секции text 26444

arm-gcc-none-eabi-4.9.3 размер секции text 25932

 

Сравнивать с keil и iar не вижу смысла, т.к. уже давным давно с ними завязал ввиду отсутствия желания порить себе карму крякнутым софтом.

Да и на тот момент по моим замерам gcc был как минимум не хуже keil...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 марта вышел очередной релиз arm-gcc-none-eabi-4.9.3: https://launchpad.net/gcc-arm-embedded/4.9/...-2015-q1-update

Либы и компилятор стали ещё более оптималены: минус 0,5КБ на проекте в 32КБ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отлично, затестируем...

А что такое "small multiply support"? Это те кортексы M0/1, где нет умножения за 1 такт?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что такое "small multiply support"? Это те кортексы M0/1, где нет умножения за 1 такт?

NXP это так объясняет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ага, значит оно. Интересно, а ST тоже сэкономили на нормальном умножении?

... Посмотрел, по крайней мере у STM32L0xx, которыми я сейчас занимаюсь, есть "single-cycle multiplier".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 марта вышел очередной релиз arm-gcc-none-eabi-4.9.3

На launchpad.net по приведенной ссылке смотрю ReleaseNotes. Там указано, что собрано из ветки http://gcc.gnu.org/svn/gcc/branches/ARM/embedded-4_9-branch/.

Открываю эту ветку и смотрю ChangeLog:

2014-12-04  Tobias Burnus  <[email protected]>

    * configure.ac: Permit also ISL 0.14 with CLooG.
    * Makefile.def: Make more dependent on mpfr, mpc, isl, and cloog.
    * Makefile.in: Regenerate.
    * configure: Regenerate.

2014-10-30  Release Manager

    * GCC 4.9.2 released.

То есть это gcc-4.9.2 с косметическими изменениями от декабря прошлого года. Поправьте меня если я ошибаюсь...

На gcc.gnu.org до сих пор последним релизом числится 2.9.2, на официальном ftp и нескольких зеркалах, на которые я зашел, никакого 4.9.3 нет, только 4.9.2...

Откуда Вы вообще взяли, что был релиз 4.9.3?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Откуда Вы вообще взяли, что был релиз 4.9.3?

arm-none-eabi-gcc -v

Using built-in specs.
COLLECT_GCC=Z:\gcc\arm-gcc-none-eabi\bin\arm-none-eabi-gcc.exe
COLLECT_LTO_WRAPPER=z:/gcc/arm-gcc-none-eabi/bin/../lib/gcc/arm-none-eabi/4.9.3/lto-wrapper.exe
Target: arm-none-eabi
Configured with: /home/build/work/GCC-4-9-build/src/gcc/configure --build=i686-linux-gnu --host=i686-w64-mingw32 --target=arm-none-eabi --prefix=/home/build/work/GCC-4-9-build/install-mingw --libexecdir=/home/build/work/GCC-4-9-build/install-mingw/lib --infodir=/home/build/work/GCC-4-9-build/install-mingw/share/doc/gcc-arm-none-eabi/info --mandir=/home/build/work/GCC-4-9-build/install-mingw/share/doc/gcc-arm-none-eabi/man --htmldir=/home/build/work/GCC-4-9-build/install-mingw/share/doc/gcc-arm-none-eabi/html --pdfdir=/home/build/work/GCC-4-9-build/install-mingw/share/doc/gcc-arm-none-eabi/pdf --enable-languages=c,c++ --disable-decimal-float --disable-libffi --disable-libgomp --disable-libmudflap --disable-libquadmath --disable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-tls --with-gnu-as --with-gnu-ld --with-headers=yes --with-newlib --with-python-dir=share/gcc-arm-none-eabi --with-sysroot=/home/build/work/GCC-4-9-build/install-mingw/arm-none-eabi --with-libiconv-prefix=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-gmp=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-mpfr=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-mpc=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-isl=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-cloog=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-libelf=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-pkgversion='GNU Tools for ARM Embedded Processors' --with-multilib-list=armv6-m,armv7-m,armv7e-m,cortex-m7,armv7-r
Thread model: single
gcc version 4.9.3 20150303 (release) [ARM/embedded-4_9-branch revision 221220] (GNU Tools for ARM Embedded Processors)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

То есть это gcc-4.9.2 с косметическими изменениями от декабря прошлого года. Поправьте меня если я ошибаюсь...

Поправляю: см. историю ветки ARM/embedded-4_9-branch

Там много чего есть, причём подозреваю, что большая часть изменений кроется за "Sync with upstream 4.9 branch".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поправляю: см. историю ветки ARM/embedded-4_9-branch

Там много чего есть, причём подозреваю, что большая часть изменений кроется за "Sync with upstream 4.9 branch".

Хм... Действительно. Спасибо за подсказку. Да, изменения не косметические.

Решил посмотреть содержимое ветки более детально.

Смотрю, что написано в gcc/BASE-VER: действительно, там стоит 4.9.3, аж с ноября прошлого года.

Смотрю, что написано в gcc/DEV-PHASE: prerelease.

Опять же, поправьте меня если я ошибаюсь, но из написанного выше следует, что релиза 4.9.3 еще не было. Почему у уважаемого demiurg_spb gcc пишет, что он release, я не знаю...

Ну и до кучи, здесь: https://gcc.gnu.org/gcc-4.9/index.html о релизе 4.9.3 тоже ничего нет. ..

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Смотрю, что написано в gcc/BASE-VER: действительно, там стоит 4.9.3, аж с ноября прошлого года.

Смотрю, что написано в gcc/DEV-PHASE: prerelease.

Опять же, поправьте меня если я ошибаюсь, но из написанного выше следует, что релиза 4.9.3 еще не было. Почему у уважаемого demiurg_spb gcc пишет, что он release, я не знаю...

Вы смотрите на объявления о релизах для основной ветки (trunk). Там релизы происходят шумно под звуки фанфар и аплодисменты.

Ветка ARM/embedded-4_9-branch живёт несколько отдельной жизнью, поэтому сабантуй по поводу изменения номера версии никто не устраивает.

Это моё ИМХО, если что.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Либы и компилятор стали ещё более оптималены: минус 0,5КБ на проекте в 32КБ.

У меня на текущем проекте размер подрос почти на 2К: было 48860, стало 50660. Оптимизация -O2.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я -O3 использую и такие ключи для оптимизации:

    CFLAGS += -flto
    CFLAGS += -fomit-frame-pointer
    CFLAGS += -falign-functions=16
    CFLAGS += -fgraphite
    CFLAGS += -funroll-loops
    CFLAGS += -fno-math-errno
    CFLAGS += -ffunction-sections
    CFLAGS += -fdata-sections

И такие ключи для линкера:

    LDFLAGS += -nostartfiles
    LDFLAGS += -nodefaultlibs
    LDFLAGS += --specs=nano.specs

    ifeq ($(DEBUG_BUILD),1)
        LDFLAGS += -u _printf_float
    endif

    LDFLAGS += -Wl,--relax
    LDFLAGS += -Wl,--gc-section
    LDFLAGS += -Wl,--static
    LDFLAGS += -Wl,--start-group
    LDFLAGS += -lm -lc -lgcc -lnosys
    LDFLAGS += -Wl,--end-group

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

C -O3 разница ещё больше:

было 55948, стало 59884.

Мои флаги:

    CXXFLAGS    += -std=c++11
    CXXFLAGS    += -fno-exceptions -fno-rtti
    CXXFLAGS    += -ffunction-sections -fdata-sections
    CXXFLAGS    += -funsigned-bitfields -fshort-enums

(LTO у меня не работает, не видит вызовов функций из инлайн-ассемблера).

 

--

Посмотрел с -Os:

43388/43524.

Видимо, убрали какую-то проблемную оптимизацию. Вероятно, в плюсах.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня на текущем проекте размер подрос почти на 2К: было 48860, стало 50660. Оптимизация -O2.

Так не честно. Размером надо мериться с оптимизацией -Os.

А если оптимизация на скорость, то надо скоростью мериться. Скажем, станет он в новой версии циклы сильнее разматывать, вот размер и подрастёт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...