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/stack_frame.cpp

    r263 r308  
    1111/////////////////////////
    1212
    13 CStackFrame::CStackFrame(){
     13StackFrame::StackFrame(){
    1414    lowest_sp=0;
    1515    now_sp=0;
    1616    max_parm_size=0;
    1717}
    18 CStackFrame::~CStackFrame(){
     18StackFrame::~StackFrame(){
    1919    //オブジェクト破棄時に不整合がないかをチェック(バグ回避)
    2020    error_check();
    2121}
    22 int CStackFrame::GetFrameSize( int localParamSize ){
     22int StackFrame::GetFrameSize( int localParamSize ){
    2323    int answer_sp;
    2424
     
    3131    return -(answer_sp-0x10);
    3232}
    33 int CStackFrame::GetNowSp(){
     33int StackFrame::GetNowSp(){
    3434    return now_sp;
    3535}
    36 void CStackFrame::mov_sp( int reg ){
     36void StackFrame::mov_sp( int reg ){
    3737    //mov reg,rsp
    3838    compiler.codeGenerator.op_mov_RR( reg, REG_RSP );
     
    4343    );
    4444}
    45 int CStackFrame::push(int reg){
     45int StackFrame::push(int reg){
    4646    now_sp-=sizeof(_int64);
    4747    if(lowest_sp>now_sp) lowest_sp=now_sp;
     
    5656    return now_sp;
    5757}
    58 void CStackFrame::push(int xmm_reg,int varSize){
     58void StackFrame::push(int xmm_reg,int varSize){
    5959    now_sp-=sizeof(_int64);
    6060    if(lowest_sp>now_sp) lowest_sp=now_sp;
     
    7373    }
    7474}
    75 void CStackFrame::ref_offset_data( int reg, int sp_offset ){
     75void StackFrame::ref_offset_data( int reg, int sp_offset ){
    7676    //mov reg,qword ptr[rsp+offset]     ※スタックフレームを利用
    7777    pertialSchedules.push_back(
     
    7979    );
    8080}
    81 void CStackFrame::ref(int reg){
     81void StackFrame::ref(int reg){
    8282    ref_offset_data( reg, now_sp );
    8383}
    84 void CStackFrame::ref(int xmm_reg,int varSize){
     84void StackFrame::ref(int xmm_reg,int varSize){
    8585    if(varSize==sizeof(double)){
    8686        //movlpd xmm_reg,qword ptr[rsp+offset]
     
    9696    }
    9797}
    98 void CStackFrame::pop(int reg){
     98void StackFrame::pop(int reg){
    9999    if(reg!=REG_NON) ref(reg);
    100100
    101101    now_sp+=sizeof(_int64);
    102102}
    103 void CStackFrame::pop(int xmm_reg,int varSize){
     103void StackFrame::pop(int xmm_reg,int varSize){
    104104    ref(xmm_reg,varSize);
    105105
    106106    now_sp+=sizeof(_int64);
    107107}
    108 void CStackFrame::parameter_allocate(int size){
     108void StackFrame::parameter_allocate(int size){
    109109    if(max_parm_size<size) max_parm_size=size;
    110110}
    111 void CStackFrame::RunningSchedule( int stackFrameSize ){
     111void StackFrame::RunningSchedule( int stackFrameSize ){
    112112    BOOST_FOREACH( const PertialSchedule *pPertialSchedule, pertialSchedules )
    113113    {
     
    116116}
    117117
    118 void CStackFrame::error_check(){
     118void StackFrame::error_check(){
    119119    if(now_sp){
    120120        SetError(300,NULL,cp);
     
    123123
    124124//スタックフレーム管理用オブジェクトポインタ
    125 CStackFrame *pobj_sf;
     125StackFrame *pobj_sf;
Note: See TracChangeset for help on using the changeset viewer.