Ignore:
Timestamp:
Aug 29, 2007, 9:05:22 AM (17 years ago)
Author:
dai_9181
Message:

静的リンクライブラリにより、複数のグローバル領域が存在することになったのでそれぞれを関数ベースに分けた

File:
1 edited

Legend:

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

    r266 r308  
    8080            }
    8181
    82             Opcode_CallProc("",pUserProc,0,"",0);
     82            Opcode_CallProc("",pUserProc,0,"");
    8383
    8484            return;
     
    199199
    200200    //レキシカルスコープをレベルアップ
    201     compiler.codeGenerator.lexicalScopes.Start( obp, LexicalScope::SCOPE_TYPE_IF );
     201    compiler.codeGenerator.lexicalScopes.Start(
     202        compiler.codeGenerator.GetNativeCodeSize(),
     203        LexicalScope::SCOPE_TYPE_IF
     204    );
    202205
    203206    int i2=CompileBuffer(ESC_ENDIF,0);
     
    220223
    221224        //レキシカルスコープをレベルアップ
    222         compiler.codeGenerator.lexicalScopes.Start( obp, LexicalScope::SCOPE_TYPE_IF );
     225        compiler.codeGenerator.lexicalScopes.Start(
     226            compiler.codeGenerator.GetNativeCodeSize(),
     227            LexicalScope::SCOPE_TYPE_IF
     228        );
    223229
    224230        CompileBuffer(ESC_ENDIF,0);
     
    277283        {
    278284            //jmp ...
    279             extern int obp;
    280             compiler.codeGenerator.op_jmp( i-obp, sizeof(long), false, true );
     285            compiler.codeGenerator.op_jmp(
     286                i-compiler.codeGenerator.GetNativeCodeSize(),
     287                sizeof(long),
     288                false,
     289                true
     290            );
    281291        }
    282292    }
     
    293303        {
    294304            //jmp ...
    295             extern int obp;
    296             compiler.codeGenerator.op_jmp( i-obp, sizeof(long), false, true );
     305            compiler.codeGenerator.op_jmp(
     306                i-compiler.codeGenerator.GetNativeCodeSize(),
     307                sizeof(long),
     308                false,
     309                true
     310            );
    297311        }
    298312    }
     
    313327
    314328    //レキシカルスコープをレベルアップ
    315     compiler.codeGenerator.lexicalScopes.Start( obp, LexicalScope::SCOPE_TYPE_WHILE );
     329    compiler.codeGenerator.lexicalScopes.Start( compiler.codeGenerator.GetNativeCodeSize(), LexicalScope::SCOPE_TYPE_WHILE );
    316330
    317331    //While内をコンパイル
     
    431445
    432446    //レキシカルスコープをレベルアップ
    433     compiler.codeGenerator.lexicalScopes.Start( obp, LexicalScope::SCOPE_TYPE_FOR );
     447    compiler.codeGenerator.lexicalScopes.Start( compiler.codeGenerator.GetNativeCodeSize(), LexicalScope::SCOPE_TYPE_FOR );
    434448
    435449    //For内をコンパイル
     
    467481
    468482    //レキシカルスコープをレベルアップ
    469     compiler.codeGenerator.lexicalScopes.Start( obp, LexicalScope::SCOPE_TYPE_DO );
     483    compiler.codeGenerator.lexicalScopes.Start( compiler.codeGenerator.GetNativeCodeSize(), LexicalScope::SCOPE_TYPE_DO );
    470484
    471485    //Do内をコンパイル
     
    743757
    744758                        //cmp reg2,r14
    745                         compiler.codeGenerator.op_cmp_reg(GetTypeSize(i2,-1),reg2,REG_R14);
     759                        compiler.codeGenerator.op_cmp_reg(Type(i2).GetSize(),reg2,REG_R14);
    746760                    }
    747761
     
    767781
    768782    //レキシカルスコープをレベルアップ
    769     compiler.codeGenerator.lexicalScopes.Start( obp, LexicalScope::SCOPE_TYPE_SELECT );
     783    compiler.codeGenerator.lexicalScopes.Start( compiler.codeGenerator.GetNativeCodeSize(), LexicalScope::SCOPE_TYPE_SELECT );
    770784
    771785    //Select Case内をコンパイル
     
    909923    }
    910924    else{
    911         ChangeTypeToWhole(resultType.GetBasicType(),type,REG_RCX,temp_reg);
     925        ChangeTypeToWhole(resultType,Type(type),REG_RCX,temp_reg);
    912926
    913927        //mov ptr[reg_ptr],rcx
    914         compiler.codeGenerator.op_mov_MR(GetTypeSize(type,-1),REG_RCX,reg_ptr,0,MOD_BASE);
    915     }
    916 }
     928        compiler.codeGenerator.op_mov_MR(Type(type).GetSize(),REG_RCX,reg_ptr,0,MOD_BASE);
     929    }
     930}
Note: See TracChangeset for help on using the changeset viewer.