Re: 64 bits on HP PA, anyone ?

From: Robert Harley (Robert.Harley@inria.fr)
Date: Fri Feb 25 2000 - 10:01:59 MET

  • Next message: Vincent Goffin: "Enquiring minds want to know"
  • Next message: Robert Harley: "32-bit version 1.1.1"

    Chris Smith wrote:
    >[...HP-UX 10...]
    >You can't use that -- the old OS cannot handle 64-bit addresses in system
    >calls -- but what's needed is 64-bit longs, not 64-bit pointers.
    >
    >There is no compile flag for that. But you can change the typedef of u64
    >to be 'long long' and change a bunch of constants and printf formats
    >to use LL instead of L.

    Yes, the source code was written so that this could be done easily: in
    previous ECDL challenges we did it to get 64-bit operations on Alphas
    running VMS and WinNT.

    The Irix binary that Thor Lancelot Simon built was also done this way.

    The changes required to the 64-bit source are...

      Replace: typedef unsigned long u64;
      With: typedef unsigned long long u64;

      Globally replace UL<< by ULL<<.

      Globally replace lX by llX. This is for format strings containing
      %011lX, %012lX and %016lX in function reportDistinguished().

      Replace %lu with %llu twice in this format string, also in function
      reportDistinguished():

        printf( "Iterations used = %lu.\n"
                "Total iterations = %lu.\n"
              , iters, total
              );

    Then fire up your compiler and you're done.

    Bye,
      Rob.

    PS: You can run the 64-bit source on 32-bit machines with "long long"s
        this way, but it is slower than the 32-bit source.

    PPS: You can also compile the 32-bit source out-of-the-box on 64-bit
         machines, but it is slower than the 64-bit source.



    This archive was generated by hypermail 2b29 : Fri Feb 25 2000 - 10:02:53 MET