Changeset 433 in dev


Ignore:
Timestamp:
Mar 12, 2008, 12:25:40 AM (16 years ago)
Author:
dai_9181
Message:

Not演算子でraxレジスタの退避処理が正常に行われていなかったため、修正。

File:
1 edited

Legend:

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

    r419 r433  
    5959
    6060        if(idCalc==CALC_XOR){
    61             //add reg1,reg2
     61            //xor reg1,reg2
    6262            compiler.codeGenerator.op_xor_reg(sizeof(long),reg1,reg2);
    6363        }
     
    104104
    105105        if( reg != REG_RAX ){
    106             //mov rax,qword ptr[rsp+offset]     ※スタックフレームを利用
    107             pobj_sf->pop(REG_RAX);
     106            // raxを演算レジスタとして利用するため、一時的に退避しておく
     107
     108            //mov qword ptr[rsp+offset],rax     ※スタックフレームを利用
     109            pobj_sf->push(REG_RAX);
    108110        }
    109111
     
    130132            compiler.codeGenerator.op_mov_RR( reg, REG_RAX );
    131133
    132             //mov qword ptr[rsp+offset],rax     ※スタックフレームを利用
    133             pobj_sf->push(REG_RAX);
     134            //mov rax,qword ptr[rsp+offset]     ※スタックフレームを利用
     135            pobj_sf->pop(REG_RAX);
    134136        }
    135137
Note: See TracChangeset for help on using the changeset viewer.