No announcement yet.

PB9 and SQLite 64-bit return values

  • Filter
  • Time
  • Show
Clear All
new posts

  • PB9 and SQLite 64-bit return values


    I've already put in my orders and like most of you have been reading through the online help for PB9. I came across the following note about the DECLARE statement.

    While most FUNCTION calling conventions are fairly well defined throughout the industry, there are a few exceptions. In the case of functions which return a Quad Integer value, some programming languages (including PowerBASIC) return the quad value in the FPU, while others return it in EDX:EAX. PowerBASIC automatically detects the method used by imported functions and adjusts accordingly for you, but that's not a feature found in other compilers. Therefore, we recommend that you do not EXPORT QUAD FUNCTIONS unless they will only be accessed by PowerBASIC programs. A simple equivalent functionality would be to return the quad-integer value to the caller in a BYREF QUAD parameter.

    Does this mean we no longer need the assembly wrappers to retrieve the full int64 values returned by sqlite3_last_insert_rowid(), etc... ?


    ps: How on earth does the compiler know which set of registers (FPU, EAX:EDX) to use for an imported function that returns a 64-bit value?
    Start as you mean to go on.