Сегодня "совершенно случайно" обнаружил, что каждый вызов каждой функции сопровождается сохранением регистров r4 и r5.
Зачем?
Код
00004c0c <InitSound>:
4c0c: 05 12 push r5 ;
4c0e: 04 12 push r4 ;
4c10: e2 d3 31 00 bis.b #2, &0x0031;r3 As==10
4c14: e2 c3 33 00 bic.b #2, &0x0033;r3 As==10
4c18: e2 d3 32 00 bis.b #2, &0x0032;r3 As==10
4c1c: 34 41 pop r4 ;
4c1e: 35 41 pop r5 ;
4c20: 30 41 ret
Как бороться?
можно конечно все мелкие функции собрать в кучу и объявить static inline,
но может другие способы есть?
Просто inline и __inline__ почему-то игнорирует.
Вроде бы мелочь, но как-то нерационально расходуются байты и микросекунды...
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)