Aner 5 10 декабря, 2014 Опубликовано 10 декабря, 2014 · Жалоба 1) На чем, на каком коду, на каком проце сравнивалось? Чтобы понять откуда это 500 получилось. 2) Сравнивали с кейлом, иаром? На сколько больший код с gcc? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 11 декабря, 2014 Опубликовано 11 декабря, 2014 · Жалоба 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... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 6 апреля, 2015 Опубликовано 6 апреля, 2015 · Жалоба 5 марта вышел очередной релиз arm-gcc-none-eabi-4.9.3: https://launchpad.net/gcc-arm-embedded/4.9/...-2015-q1-update Либы и компилятор стали ещё более оптималены: минус 0,5КБ на проекте в 32КБ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 6 апреля, 2015 Опубликовано 6 апреля, 2015 · Жалоба Отлично, затестируем... А что такое "small multiply support"? Это те кортексы M0/1, где нет умножения за 1 такт? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 6 апреля, 2015 Опубликовано 6 апреля, 2015 · Жалоба А что такое "small multiply support"? Это те кортексы M0/1, где нет умножения за 1 такт? NXP это так объясняет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 6 апреля, 2015 Опубликовано 6 апреля, 2015 · Жалоба Ага, значит оно. Интересно, а ST тоже сэкономили на нормальном умножении? ... Посмотрел, по крайней мере у STM32L0xx, которыми я сейчас занимаюсь, есть "single-cycle multiplier". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alx2 0 7 апреля, 2015 Опубликовано 7 апреля, 2015 · Жалоба 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? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 7 апреля, 2015 Опубликовано 7 апреля, 2015 · Жалоба Откуда Вы вообще взяли, что был релиз 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) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 7 апреля, 2015 Опубликовано 7 апреля, 2015 · Жалоба То есть это gcc-4.9.2 с косметическими изменениями от декабря прошлого года. Поправьте меня если я ошибаюсь... Поправляю: см. историю ветки ARM/embedded-4_9-branch Там много чего есть, причём подозреваю, что большая часть изменений кроется за "Sync with upstream 4.9 branch". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alx2 0 8 апреля, 2015 Опубликовано 8 апреля, 2015 · Жалоба Поправляю: см. историю ветки 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 тоже ничего нет. .. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 8 апреля, 2015 Опубликовано 8 апреля, 2015 · Жалоба Смотрю, что написано в gcc/BASE-VER: действительно, там стоит 4.9.3, аж с ноября прошлого года. Смотрю, что написано в gcc/DEV-PHASE: prerelease. Опять же, поправьте меня если я ошибаюсь, но из написанного выше следует, что релиза 4.9.3 еще не было. Почему у уважаемого demiurg_spb gcc пишет, что он release, я не знаю... Вы смотрите на объявления о релизах для основной ветки (trunk). Там релизы происходят шумно под звуки фанфар и аплодисменты. Ветка ARM/embedded-4_9-branch живёт несколько отдельной жизнью, поэтому сабантуй по поводу изменения номера версии никто не устраивает. Это моё ИМХО, если что. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 8 апреля, 2015 Опубликовано 8 апреля, 2015 · Жалоба Либы и компилятор стали ещё более оптималены: минус 0,5КБ на проекте в 32КБ. У меня на текущем проекте размер подрос почти на 2К: было 48860, стало 50660. Оптимизация -O2. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 8 апреля, 2015 Опубликовано 8 апреля, 2015 · Жалоба Я -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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 8 апреля, 2015 Опубликовано 8 апреля, 2015 · Жалоба 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. Видимо, убрали какую-то проблемную оптимизацию. Вероятно, в плюсах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 8 апреля, 2015 Опубликовано 8 апреля, 2015 · Жалоба У меня на текущем проекте размер подрос почти на 2К: было 48860, стало 50660. Оптимизация -O2. Так не честно. Размером надо мериться с оптимизацией -Os. А если оптимизация на скорость, то надо скоростью мериться. Скажем, станет он в новой версии циклы сильнее разматывать, вот размер и подрастёт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться