Сравнение IAR Arm C 3.40 / 4.11 / 4.20 Откомпилировал один и тот же файл компилерами разных версий с одинаковыми настройками. Для оценки использовался файл os_core из состава ucos-ii.
Получил следующий результат объема кода в байтах:
/ 3.40a / 4.11a / 4.20a /
Arm mode
/ 3836 / 3836 / 3880 /
thumb mode
/ 2696 / 2432 / 2456 /
То есть фактически новые версии делают более пухлый код (за исключением 3.40->4.11 thumb mode).
А говорят, что улучшают кодогенерацию :)
Этот же тестовый проект использовал для оценки времени переключения контекста ucos-ii. Получил также незначительно ухудшение времени при использовании более новых версий:
/ 10.6 uS / 10.9 uS / 11.0 uS /
То бишь, смысл в использовании новых версий - устраненные баги, не более того ?
Да, и все таки, что есть shared байты? Где их следы искать и что определяет их количество?