Hi nidud,
I haven't "released" any of these FASTCALL conventions in 32-bit as done in 64.
Maybe I am missing something, Asmc supports the standard fastcall convention in 32-bit :
; Source code assembled with
; Asmc Macro Assembler Version 2.31.30
.386
.model flat,stdcall
option casemap:none
includelib "\asmc-master\lib\kernel32.lib"
includelib "\asmc-master\lib\msvcrt.lib"
ExitProcess PROTO :DWORD
printf PROTO C :DWORD,:VARARG
.data
string1 db '10 + 20 + 30 + 40 = %d',0
.code
fcallproc PROC FASTCALL a:DWORD,b:DWORD,c:DWORD,d:DWORD
mov eax,a
add eax,b
add eax,c
add eax,d
ret
fcallproc ENDP
start:
invoke fcallproc,10,20,30,40
invoke printf,ADDR string1,eax
invoke ExitProcess,0
END startDisassembling the object module :
_text SEGMENT DWORD PUBLIC 'CODE'
@fcallproc@16 PROC NEAR
push ebp
mov ebp, esp
mov eax, ecx
add eax, edx
add eax, dword ptr [ebp+8H]
add eax, dword ptr [ebp+0CH]
leave
ret 8
@fcallproc@16 ENDP
_start PROC NEAR
push 40
push 30
mov edx, 20
mov ecx, 10
call @fcallproc@16
push eax
push offset _string1
call _printf
add esp, 8
push 0
call _ExitProcess@4
_start ENDP
_text ENDS