Hi, I need some long long (64 bit) additions in a fast interrupt code.
After each addition, I need to limit the result to MIN/MAX_INT64 if some overflow occurred.
In assembler, I would use the brach command BVC/BVS to check the overflow flag after the addition - this would be only one additional command, very nice (in normal case, where no overflow occurs).
Is there any way to implement / insert such functionality also in C / C++ code?
I tried to include dspfncts.h, and then check the variable Overflow, but this will add 3 additional assembly lines (to load the value of the overflow bit - it does NOT use the very compact commands BVC/BVS). As I have quite many such additions, this will blow up my code quite a bit.
Is there any possibility to do this overflow check in an efficient way in C/C++?
No, I do not know other compilers with this option. But why not being the first ... .
Saturation control really is very important.
Just with the Keil compiler currently I have the problem, that I do not see any way how to implement this saturation functionality for 64 bit math (long long). (while keeping reasonable speed of the code).
With the inline assembly of the Microchip compiler this would be quite easy.
And Per Westermark, this inline assembly has nothing to do with the DSP functionality of dsPIC33 - Microchip uses the same inline assembly command also for all the standard PIC devices. (I referred to DSP only, because reluctant consultant came with the comment, that the wish for saturated add/sub seemed very new to him ...).