4 ms·
> Checking overflow for addition on the other hand is something that is very seldom used (on any CPU). I believe you are wrong. Almost every addition used in s
by codedokode 3y ago
> Checking overflow for addition on the other hand is something that is very seldom used (on any CPU).
I believe you are wrong. Almost every addition used in software should be a proper addition, not addition module 2^32 or 2^64. For example, if you want to calculate total for customer's order, you want proper addition, not a remainder after division by 2^32. Or if you are calculating a number of visitors of a website, again, you need the correct number.
Addition modulo N is used only in niche cases like cryptography.
In my opinion, it is wrapping addition which is seldomly used. I can't remember last time when I needed it. So it is surprising that RISC-V makes rarely used operation take less instructions than more popular one.
You might argue, that some poorly designed ancient languages have '+' operator to perform wrapping addition, however that is only because they are poorly designed, not because users want such method of addition. For comparison, a properly designed language, Swift has non-wrapping addition.
- defrost 3y ago> Addition modulo N is used only in niche cases like cryptography. ... and niche cases like GIS location computations on a spherical planet and any form of engineering | physics mesh computation. It's inescapable when you peer into the guts of any earth based modelling from satellte data .. something that happens on a daily terrabyte scale.
- ghusbands 3y agoEven if there are some more cases, the basic point is still true: The majority of additions don't warrant word-size wrapping and it has been a source of many, many bugs.
- rcxdude 3y agoWhich is almost never wrapping at a power of two, unless you scale your coordinate system to optimise it.
- defrost 3y agoThe quote I responded to was: > Addition modulo N is used only in niche cases ... and not modulo 2^N. The point that I would make is that general purpose CPU's doing general everday tasks such as https connections, secure transfers, GIS mapping, etc are doing a great many more modulo operations than acknowledged above.