Ignore:
Timestamp:
Apr 16, 2007, 3:52:40 AM (17 years ago)
Author:
dai_9181
Message:

関数の戻り値オブジェクトのメンバ・メソッドを一時オブジェクトを介さずに参照できるようにした。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler32/NumOpe_Relation.cpp

    r64 r97  
    11#include "../BasicCompiler_Common/common.h"
    22#include "Opcode.h"
     3
     4void AutoExtendToBigType( int *type_stack,int sp, int reg1, int reg2 ){
     5    /*
     6    int bigSize = GetTypeSize( type_stack[sp-1], -1 );
     7    if( bigSize != GetTypeSize( type_stack[sp-2], -1 ) ){
     8        int extReg = reg2;
     9        int oldType = type_stack[sp-2];
     10        if( bigSize < GetTypeSize( type_stack[sp-2], -1 ) ){
     11            bigSize = GetTypeSize( type_stack[sp-2], -1 );
     12            extReg = reg1;
     13            oldType = type_stack[sp-1];
     14        }
     15        if( bigSize == 2 ){
     16            ExtendTypeTo16( oldType, extReg );
     17        }
     18        else if( bigSize == 4 ){
     19            ExtendTypeTo32( oldType, extReg );
     20        }
     21        else{
     22            SetError();
     23        }
     24    }*/
     25}
     26
    327
    428BOOL Calc_Relation_PE(int *type_stack,LONG_PTR *index_stack,int *pStackPointer){
     
    195219        //pop eax
    196220        op_pop(REG_EAX);
     221
     222        // どちらかのサイズが足りない場合は自動拡張する
     223        AutoExtendToBigType( type_stack, sp, REG_EAX, REG_EBX );
    197224
    198225        //sub esp,4
     
    434461        op_pop(REG_EAX);
    435462
     463        // どちらかのサイズが足りない場合は自動拡張する
     464        AutoExtendToBigType( type_stack, sp, REG_EAX, REG_EBX );
     465
    436466        //sub esp,4
    437467        op_sub_esp(4);
     
    675705        op_pop(REG_EAX);
    676706
     707        // どちらかのサイズが足りない場合は自動拡張する
     708        AutoExtendToBigType( type_stack, sp, REG_EAX, REG_EBX );
     709
    677710        //sub esp,4
    678711        op_sub_esp(4);
     
    911944        //pop eax
    912945        op_pop(REG_EAX);
     946
     947        // どちらかのサイズが足りない場合は自動拡張する
     948        AutoExtendToBigType( type_stack, sp, REG_EAX, REG_EBX );
    913949
    914950        //sub esp,4
     
    11151151        op_pop(REG_EBX);
    11161152
     1153        // どちらかのサイズが足りない場合は自動拡張する
     1154        AutoExtendToBigType( type, sp, REG_EAX, REG_EBX );
     1155
    11171156        //sub esp,4
    11181157        op_sub_esp(4);
     
    13061345        op_pop(REG_EBX);
    13071346
     1347        // どちらかのサイズが足りない場合は自動拡張する
     1348        AutoExtendToBigType( type, sp, REG_EAX, REG_EBX );
     1349
    13081350        //sub esp,4
    13091351        op_sub_esp(4);
Note: See TracChangeset for help on using the changeset viewer.