32 lines
772 B
C
32 lines
772 B
C
#define PARAMINFO_SWITCH_CASE(paramType, enumType, passType) \
|
|
case enumType: \
|
|
paramInfo[i].flags = info->params[i].flag; \
|
|
paramInfo[i].size = sizeof(paramType); \
|
|
paramInfo[i].type = passType; \
|
|
size += sizeof(paramType); \
|
|
break;
|
|
|
|
#define VSTK_PARAM_SWITCH(paramType, enumType) \
|
|
case enumType: \
|
|
*(paramType *)vptr = *(paramType *)(stack+offset); \
|
|
if(i + 1 != info->paramcount) \
|
|
{ \
|
|
vptr += sizeof(paramType); \
|
|
} \
|
|
offset += sizeof(paramType); \
|
|
break;
|
|
#ifndef __linux__
|
|
|
|
#define STACK_OFFSET 8
|
|
#define GET_STACK \
|
|
unsigned long stack; \
|
|
__asm \
|
|
{ \
|
|
mov stack, ebp \
|
|
};
|
|
#else
|
|
#define STACK_OFFSET 4
|
|
#define GET_STACK \
|
|
unsigned long stack = 0; \
|
|
asm ("movl %%esp, %0;" : "=r" (stack));
|
|
#endif |