Changeset 325 in dev for trunk/abdev/BasicCompiler64


Ignore:
Timestamp:
Sep 25, 2007, 8:56:38 AM (17 years ago)
Author:
dai_9181
Message:
 
Location:
trunk/abdev/BasicCompiler64
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler64/Compile_CallProc.cpp

    r320 r325  
    474474    return true;
    475475}
     476
     477void UnsafeCall( const char *methodPtrValueStr, const char *params )
     478{
     479}
  • trunk/abdev/BasicCompiler64/Compile_Func.cpp

    r308 r325  
    99
    1010int GetFunctionFromName(char *FuncName){
    11     if(lstrcmpi(FuncName,"Len")==0)         return FUNC_LEN;
    12     if(lstrcmpi(FuncName,"AddressOf")==0)   return FUNC_ADDRESSOF;
    13     if(lstrcmpi(FuncName,"SizeOf")==0)      return FUNC_SIZEOF;
    14     if(lstrcmpi(FuncName,"VarPtr")==0)      return FUNC_VARPTR;
    15     if(lstrcmpi(FuncName,"ObjPtr")==0)      return FUNC_OBJPTR;
    16     if(lstrcmpi(FuncName,"GetDouble")==0)   return FUNC_GETDOUBLE;
    17     if(lstrcmpi(FuncName,"GetSingle")==0)   return FUNC_GETSINGLE;
    18     if(lstrcmpi(FuncName,"GetQWord")==0)    return FUNC_GETQWORD;
    19     if(lstrcmpi(FuncName,"GetDWord")==0)    return FUNC_GETDWORD;
    20     if(lstrcmpi(FuncName,"GetWord")==0)     return FUNC_GETWORD;
    21     if(lstrcmpi(FuncName,"GetByte")==0)     return FUNC_GETBYTE;
     11    if( lstrcmpi( FuncName, "Len" ) == 0 )              return FUNC_LEN;
     12    if( lstrcmpi( FuncName, "AddressOf" ) == 0 )        return FUNC_ADDRESSOF;
     13    if( lstrcmpi( FuncName, "SizeOf" ) == 0 )           return FUNC_SIZEOF;
     14    if( lstrcmpi( FuncName, "VarPtr" ) == 0 )           return FUNC_VARPTR;
     15    if( lstrcmpi( FuncName, "ObjPtr" ) == 0 )           return FUNC_OBJPTR;
     16    if( lstrcmpi( FuncName, "__unsafe_call" ) == 0 )    return FUNC_UNSAFE_CALL;
     17    if( lstrcmpi( FuncName, "GetDouble" ) == 0 )        return FUNC_GETDOUBLE;
     18    if( lstrcmpi( FuncName, "GetSingle" ) == 0 )        return FUNC_GETSINGLE;
     19    if( lstrcmpi( FuncName, "GetQWord" ) == 0 )         return FUNC_GETQWORD;
     20    if( lstrcmpi( FuncName, "GetDWord" ) == 0 )         return FUNC_GETDWORD;
     21    if( lstrcmpi( FuncName, "GetWord" ) == 0 )          return FUNC_GETWORD;
     22    if( lstrcmpi( FuncName, "GetByte" ) == 0 )          return FUNC_GETBYTE;
    2223    return 0;
    2324}
     
    251252    }
    252253}
     254
     255void Opcode_Func_unsafe_call( const char *paramsStr, Type &resultType, bool isCallOn )
     256{
     257    if( isCallOn )
     258    {
     259        int i = 0;
     260        char methodPtrParamStr[8192];
     261        GetOneParameter( paramsStr, i, methodPtrParamStr );
     262        UnsafeCall( methodPtrParamStr, paramsStr + i );
     263    }
     264
     265    resultType = UserProc::CompilingUserProc().ReturnType();
     266}
     267
    253268void Opcode_Func_GetPtrData( const char *Parameter, const int type ){
    254269    int reg=REG_RAX;
     
    296311            Opcode_Func_ObjPtr( Parameter, resultType, isCallOn );
    297312            break;
     313        case FUNC_UNSAFE_CALL:
     314            Opcode_Func_unsafe_call( Parameter, resultType, isCallOn );
     315            break;
    298316
    299317        case FUNC_GETDOUBLE:
  • trunk/abdev/BasicCompiler64/FunctionValue.h

    r109 r325  
    1212
    1313//その他
    14 #define FUNC_ADDRESSOF  0x0619
    15 #define FUNC_SIZEOF     0x0620
     14#define FUNC_ADDRESSOF      0x0619
     15#define FUNC_SIZEOF         0x0620
     16#define FUNC_UNSAFE_CALL    0x0621
    1617
    1718//ポインタ
    18 #define FUNC_GETDOUBLE  0x0630
    19 #define FUNC_GETSINGLE  0x0631
    20 #define FUNC_GETQWORD   0x0632
    21 #define FUNC_GETDWORD   0x0634
    22 #define FUNC_GETWORD    0x0635
    23 #define FUNC_GETBYTE    0x0636
     19#define FUNC_GETDOUBLE      0x0630
     20#define FUNC_GETSINGLE      0x0631
     21#define FUNC_GETQWORD       0x0632
     22#define FUNC_GETDWORD       0x0634
     23#define FUNC_GETWORD        0x0635
     24#define FUNC_GETBYTE        0x0636
  • trunk/abdev/BasicCompiler64/Opcode.h

    r316 r325  
    333333bool Opcode_CallProc(const char *Parameter,const UserProc *pUserProc,DWORD dwFlags,const char *ObjectName);
    334334bool Opcode_CallDllProc( const char *lpszParms,DllProc *pDllProc);
     335void UnsafeCall( const char *methodPtrValueStr, const char *params );
    335336
    336337//Compile_ProcOp.cpp
Note: See TracChangeset for help on using the changeset viewer.