Changeset 111 in dev for BasicCompiler64


Ignore:
Timestamp:
May 7, 2007, 2:41:36 AM (18 years ago)
Author:
dai_9181
Message:

ObjPtr(This)がエラーになるバグを修正。
オーバーロードのチェックレベルを一つ増やした(整数型のサイズ照合によるオーバーロードチェックを可能にした)。

Location:
BasicCompiler64
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler64/Compile_Func.cpp

    r109 r111  
    22#include "Opcode.h"
    33
    4 int GetFunctionType(int FuncNum){
    5     switch(FuncNum){
    6         case FUNC_LEN:
    7             return DEF_LONG;
    8         case FUNC_SIZEOF:
    9             return DEF_LONG;
    10         case FUNC_ADDRESSOF:
    11         case FUNC_VARPTR:
    12         case FUNC_OBJPTR:
    13             return DEF_PTR_VOID;
    14         case FUNC_GETDOUBLE:
    15             return DEF_DOUBLE;
    16         case FUNC_GETSINGLE:
    17             return DEF_SINGLE;
    18         case FUNC_GETQWORD:
    19             return DEF_QWORD;
    20         case FUNC_GETDWORD:
    21             return DEF_DWORD;
    22         case FUNC_GETWORD:
    23             return DEF_WORD;
    24         case FUNC_GETBYTE:
    25             return DEF_BYTE;
    26     }
    27     return 0;
    28 }
    294int GetFunctionFromName(char *FuncName){
    305    if(lstrcmpi(FuncName,"Len")==0)         return FUNC_LEN;
     
    229204        //mov rax,qword ptr[rax]
    230205        op_mov_RM( sizeof(_int64), REG_RAX, REG_RAX, 0, MOD_BASE );
     206
     207        SetError(-120,NULL,cp);
    231208    }
    232209}
     
    254231    SetVarPtrToReg(REG_RAX,&RelativeVar);
    255232
    256     if( beforeType == DEF_OBJECT && lstrcmpi( Parameter, "This" ) != 0 ){
     233    if( lstrcmpi( Parameter, "This" )==0 ){
     234        // Thisの場合は特別にオブジェクトポインタが返ってくるので、何もせずに抜ける
     235    }
     236    else if( beforeType == DEF_OBJECT ){
    257237        //参照をオブジェクトポインタに変更
    258238
  • BasicCompiler64/Opcode.h

    r97 r111  
    389389
    390390//Compile_Func.cpp
    391 int GetFunctionType(int FuncNum);
    392391int GetFunctionFromName(char *FuncName);
    393392bool Opcode_CallFunc( const char *Parameter, const int FuncNum, Type &ReturnTypeInfo, bool isCallOn = true );
Note: See TracChangeset for help on using the changeset viewer.