Цитата
Есть ли стандартная фукция или макрос в cw?
Кстати, не знаю, что такое cw, но IAR вполне справился (только чуть наоборот):
Код
uint32_t foo3(uint32_t a, uint32_t n)
{
return (a>>n)|(a<<(32-n));
}
преобразовал в
Код
\ In segment CODE, align 4, keep-with-next
113 uint32_t foo3(uint32_t a, uint32_t n)
114 {
115 return (a>>n)|(a<<(32-n));
\ foo3:
\ 00000000 7001A0E1 MOV R0,R0, ROR R1
\ 00000004 0EF0A0E1 MOV PC,LR ;; return
116
117 }
Правда, это правый сдвиг. Левый требует инверсии операнда по модулю 32. Так что 2 команды получится.