[fpc-devel] Review of AVR patch for bug 31925

Georg Hieber georg at hieber-stgt.de
Fri Sep 22 18:34:00 CEST 2017


implementing 8*8 bit multiplications as library functions is certainly 
one way to cope with the absence of mul/mulsu instructions in  the 
"basic" avr subarchitectures, and the resultint compiler error message 
when confronted with any source code resulting in such a multiplication.

The question is, if that is the most reasonable way to do it, or if it 
would be simpler to have the compiler directly insert the required 
compare/add/shift sequence. This should be answered by someone with a 
very good knowledge of the AVR code generator.


Am 22.09.2017 um 12:28 schrieb Christo:
> On Fri, 2017-09-22 at 07:10 +0200, Christo wrote:
>> On Wed, 2017-09-20 at 12:36 +0200, Karoly Balogh (Charlie/SGR) wrote:
> A complication I've noted is that enabling overflow checking doesn't
> call the fpc_mul_byte_overflow function (as the naming convention
> suggested), rather the generated code calls fpc_mul_byte and then check
> the carry flag to determine whether an overflow occurred. Since the
> function in generic.inc is plain pascal code there is no guarantee that
> the carry flag will be set if an overflow should have occurred.  I
> assume that at a higher level the code generator assumes that a
> hardware MUL instruction _will_ be used, leading to incorrect overflow
> detection logic if a software helper is used.
>
> A similar situation exist for the current 16 bit software MUL case with
> overflow checking.
>
> Any pointers on where to start looking to try and adapt the overflow
> checking code generation?
> _______________________________________________
> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel




More information about the fpc-devel mailing list