Metropoli BBS
VIEWER: callp.txt MODE: TEXT (ASCII)
callp
-----

There are some things you must understand about callp:

As you should know 'callp' is a macro I made to replace INVOKE and you
may freely use it (I recommend it over INVOKE greatly), it's in qlib.inc

(C programmers should not be concerned with this)

You should just know how it works so you can avoid some things:
  Features/advantages/disadvantages :
    - all args are zero extended to DWORDs (regardless of what the PROC wants)
      (hey, it's just a macro)
      (it trashing eax sometimes but you shall be warned if you try and use
       eax if it's been trashed)
    - QWORDs are pushed properly now
    - FWORDs are zero extended to QWORDs (does NOT trash eax)
    - no augment matching is performed at all (it's just a simple macro)
    - if a constant is given it is pushed as a DWORD - this is the only
      real problem if a FWORD or QWORD is expected by the proc then it will
      not get it properly (and all other args after that)
    - knows that segment registers are 32bits (unlike INVOKE which messes
      up the stack and crashes your programs)
    - properly extends args (INVOKE does not always properly extend them -
       ie : Proc expects DWORD and you pass a WORD, Masm should push a word
       0 then the WORD, but instead it pushes DWORD 0 then the WORD (stack
       messed up and program crashes))

So don't use INVOKE (it sux) and use callp.  You should never have any more
problems again... (NOTE: INVOKE only bombs like this in 32bit segments,
as far as I know in 16bit ones it works ok) (but who works in 16bit modes
anymore?)

If you don't want to use callp and want the speed that INVOKE gives
keep harasing MS until they fix INVOKE! (renaming it to CALL would be nice too)
    call 1-905-568-3503 (Toronto)
    or   1-800-759-5474 (Developers Network?)
    or   1-800-936-4300 (Automation help)  (press 5 for MASM V6.1 ??)
                               (gee isn't V6.11 out yet !!)

Please report any problems/bugs to me (concerning callp).
mailto:subdeath@globalserve.net

http://www.globalserve.net/~subdeath

 
[ RETURN TO DIRECTORY ]