так это Cortex-M0 ! а у вас уже Cortex-M3/M4jcxz писал(а): Пн авг 17, 2026 18:42:10Так себе оптимизация.![]()
Древний IAR 7.80.4 for ARM компилит модуль в 2 команды:На входе аргумент (iu) - в R3; результат (n) - в R7.Код: Выделить всё
n = ABS32(iu); 0xEA83 0x77E3 EOR R7,R3,R3, ASR #+31 0xEBA7 0x77E3 SUB R7,R7,R3, ASR #+31
я в курсе что IAR - круто компилирует
( и даже с отключенной оптимизацией)
вот некоторые тесты по компиляторам ( закладка Tests )
на основе теста Coremark
https://docs.google.com/spreadsheets/d/ ... sp=sharing
// (a > 0) ? a : -a ;
GCC для Cortex-M3/M4 делает 3 команды
но используется только один регистр и по коду 3 х 16бит
Код: Выделить всё
0x2800 cmp r0, #0
0xbfb8 it lt
0x4240 neglt r0, r0
