ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
860016 Топик полностью
йцукен (03.08.2018 16:57, просмотров: 139) ответил SciFi на Смотря что значит "смысл". Точно известно, что яр делает гораздо более оптимальный код, чем gcc, который сидит внутри атоллика. Удобство отладчиков приблизительно одинаковое, КМК. Если интересует IDE, эклипс (атоллик) гораздо приятнее, чем яр.
Про оптимизацию в ИАРе (новые приключения неуловимого Джо).  constexpr int num_bits = 24; constexpr int num_bits_max = (1<<(num_bits-1)) - 1; constexpr int num_bits_min = -(1<<(num_bits-1)); int ssat( int x ) { if ( x > num_bits_max ) return num_bits_max; else if ( x < num_bits_min ) return num_bits_min; else return x; } int foo( int x ) { return ssat( x ); } 14 int ssat( int x ) 15 { \ _Z4ssati: (+1) \ 00000000 0x4601 MOV R1,R0 16 if ( x > num_bits_max ) \ 00000002 0x.... LDR.N R0,??DataTable3_1 ;; 0x7fffff \ 00000004 0x4281 CMP R1,R0 \ 00000006 0xDC03 BGT.N ??ssat_0 17 return num_bits_max; 18 else if ( x < num_bits_min ) \ 00000008 0x.... LDR.N R0,??DataTable3_2 ;; 0xff800000 \ 0000000A 0x4288 CMP R0,R1 \ 0000000C 0xBFB8 IT LT \ 0000000E 0x4608 MOVLT R0,R1 19 return num_bits_min; \ ??ssat_0: (+1) \ 00000010 0x4770 BX LR ;; return 20 else 21 return x; 22 } 23 \ In section .text, align 2, keep-with-next 24 int foo( int x ) 25 { 26 return ssat( x ); \ _Z3fooi: (+1) \ 00000000 0xF300 0x0017 SSAT R0,#+24,R0 \ 00000004 0x4770 BX LR ;; return 27 } Оптимизатор не считает нужным (возможным?) заменить тело функции ssat на инструкцию SSAT, но заменяет на неё вызов ssat. WTF? Чувствую, письмо в Спортлото будет длинным.