include 'win32axp.inc'
call_table:
dd function1
dd function2
;...
begin:
;...
stdcall [ebx*4+call_table],eax,edx,ecx ;<--- error: invalid expression.
function1:
function2:
.end begin
stdcall [ebx*4+call_table],eax,edx,ecx ;<--- error: invalid expression.
C:\<path>\fasm\include/win32axp.inc [58] stdcall [5]:
if defined proc \# % & count@stdcall <> proc \# %
error: invalid expression.
The expression evaluates to:
if defined [ebx*4+call_table]% & count@stdcall <> [ebx*4+call_table]%
And the workaround of loading the address first into a register is not possible when there are no spare registers:
mov reg,[ebx*4+call_table]
stdcall reg,eax,edx,ecx ;<--- Okay only if we have a spare register