Ignore:
Timestamp:
Jul 21, 2007, 11:47:40 PM (17 years ago)
Author:
dai_9181
Message:

CodeGeneratorクラスのベースを実装

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler32/CParameter.cpp

    r206 r225  
    11#include "stdafx.h"
     2
     3#include <Compiler.h>
    24
    35#include "../BasicCompiler_Common/common.h"
     
    7274
    7375                    //push esp
    74                     op_push( REG_ESP );
     76                    compiler.codeGenerator.op_push( REG_ESP );
    7577
    7678                    nCountOfTempObjects++;
     
    111113                //call free
    112114                extern const UserProc *pSub_free;
    113                 op_call(pSub_free);
     115                compiler.codeGenerator.op_call(pSub_free);
    114116            }
    115117            else{
     
    118120                    //pop ... 上位32ビット
    119121                    //pop ... 下位32ビット
    120                     op_add_esp( PTR_SIZE * 3 );
     122                    compiler.codeGenerator.op_add_esp( PTR_SIZE * 3 );
    121123                }
    122124                else{
    123125                    //pop ... 参照を消す
    124126                    //pop ... 値を消す
    125                     op_add_esp( PTR_SIZE * 2 );
     127                    compiler.codeGenerator.op_add_esp( PTR_SIZE * 2 );
    126128                }
    127129            }
     
    134136
    135137    //push object_size
    136     op_push_V(object_size);
     138    compiler.codeGenerator.op_push_V(object_size);
    137139
    138140    //call calloc
    139141    extern const UserProc *pSub_calloc;
    140     op_call(pSub_calloc);
     142    compiler.codeGenerator.op_call(pSub_calloc);
    141143
    142144    //push eax(ここでプッシュされた値が実際にパラメータとして引き渡される)
    143     op_push(REG_EAX);
     145    compiler.codeGenerator.op_push(REG_EAX);
    144146
    145147    //push eax
    146     op_push(REG_EAX);
     148    compiler.codeGenerator.op_push(REG_EAX);
    147149
    148150    Type calcType;
     
    332334
    333335                    //mov eax, dword ptr[esp+offset]
    334                     op_mov_RM(
     336                    compiler.codeGenerator.op_mov_RM(
    335337                        sizeof(long),
    336338                        REG_EAX,
     
    340342
    341343                    //push eax
    342                     op_push(REG_EAX);
     344                    compiler.codeGenerator.op_push(REG_EAX);
    343345                }
    344346                else{
     
    378380
    379381                            //push eax
    380                             op_push(REG_EAX);
     382                            compiler.codeGenerator.op_push(REG_EAX);
    381383                    }
    382384                }
Note: See TracChangeset for help on using the changeset viewer.