Hi,

Suppose I have the following code:

var
  a,b: dword;
  c: qword;

begin
  a := 10000000;
  b := 20000000;
  c := a * b;
  writeln(c);
end.

Now, although c is large enough to contain the result only the lower dword is filled. I can force correct results by using c := qword(a) * b, but the slow fpc_mul_qword is used.

The code generated for the above sample is:
# [16] c:=a*b;
        movl    U_P$PROJECT1_A,%edx
        movl    U_P$PROJECT1_B,%eax
        mull    %edx
        movl    $0,%edx
        movl    %eax,U_P$PROJECT1_C
        movl    %edx,U_P$PROJECT1_C+4

What I want is the above code, but without the "movl $0,%edx" instruction. Is there a way to do this (wihtout using fpc_mul_qword).

Regards,
Vincent.

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to