Changeset 36 in dev for BasicCompiler64/NumOpe_Logical.cpp
- Timestamp:
- Jan 20, 2007, 4:55:26 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
BasicCompiler64/NumOpe_Logical.cpp
r3 r36 88 88 int reg; 89 89 90 if(type[sp-1]==DEF_INT64||type[sp-1]==DEF_QWORD){ 90 if( type[sp - 1] == DEF_BOOLEAN ){ 91 SetOneTermToReg_Whole32Calc(type[sp-1],®); 92 93 if( reg != REG_RAX ){ 94 //mov rax,qword ptr[rsp+offset] ※スタックフレームを利用 95 pobj_sf->pop(REG_RAX); 96 } 97 98 //cmp reg,0 99 op_cmp_value(GetTypeSize(type[sp-1],-1),reg,0); 100 101 //setne al 102 op_setne( REG_RAX ); 103 104 //and rax,000000FFh 105 op_and64_value(REG_RAX,(int)0xFF); 106 107 //neg 108 op_neg( REG_RAX ); 109 110 //sbb rax, rax 111 op_sbb_RR( sizeof(_int64), REG_RAX, REG_RAX ); 112 113 //add rax, 1 114 op_add64_value( REG_RAX, 1 ); 115 116 if( reg != REG_RAX ){ 117 //mov reg,rax 118 op_mov_RR( reg, REG_RAX ); 119 120 //mov qword ptr[rsp+offset],rax ※スタックフレームを利用 121 pobj_sf->push(REG_RAX); 122 } 123 124 if(reg==REG_R14){ 125 //mov qword ptr[rsp+offset],r14 ※スタックフレームを利用 126 pobj_sf->push(REG_R14); 127 } 128 } 129 else if(type[sp-1]==DEF_INT64||type[sp-1]==DEF_QWORD){ 91 130 SetOneTermToReg_Whole64Calc(type[sp-1],®); 92 131
Note:
See TracChangeset
for help on using the changeset viewer.