MASM プロシージャーの呼び出し規約は、PROTO 宣言子および PROC 宣言子で指定します。PROTO 宣言子および PROC 宣言子の STDCALL オプションは、プロシージャーに対して STDCALL の呼び出し規約を使用するように指示します。PROTO 宣言子および PROC 宣言子の C オプションは、プロシージャーに対して C 呼び出し規約を使用するように指示します。PROC 宣言子の USES オプションは、呼び出された MASM ルーチンで、どのレジスターを保存し復元するのかを指定します。PROTO 宣言子および PROC 宣言子の VARARG オプションは、プロシージャーで可変長引数を許可するように指示します。
例えば、次の Fortran と MASM の文は、STDCALL の呼び出し規約を使用して、インテル® Visual Fortran から呼び出すことができる MASM 関数を設定しています。
! Fortran STDCALL interface prototype. INTERFACE INTEGER FUNCTION forfunc(I1, I2) !DEC$ ATTRIBUTES STDCALL :: forfunc INTEGER I1 INTEGER(2) I2 END INTERFACE WRITE (*,*) forfunc(I1,I2) ! End Fortran STDCALL interface ;MASM STDCALL Prototype .MODEL FLAT, STDCALL forfunc PROTO STDCALL, forint: SDWORD, shorti: ptr SWORD .CODE forfunc PROC STDCALL, forint: SDWORD, shorti: ptr SWORD ... forfunc ENDP END
次の Fortran と MASM の文は、C の呼び出し規約を使用して、Fortran から呼び出すことができる MASM 関数を設定しています。
! Fortran C interface prototype INTERFACE INTEGER FUNCTION Forfunc (I1, I2) !DEC$ ATTRIBUTES C, ALIAS:'Forfunc' :: Forfunc INTEGER I1 INTEGER(2) I2 END INTERFACE WRITE(*,*) Forfunc (I1, I2) END ! End Fortran C interface ;MASM C PROTOTYPE .MODEL FLAT, C Forfunc PROTO C, forint:SDWORD, shorti: ptr SWORD .CODE Forfunc PROC C, forint:SDWORD, shorti: ptr SWORD ... Forfunc ENDP END
© 1996-2011 Intel Corporation. 無断での引用、転載を禁じます。