Changeset 226 in dev for trunk/abdev/BasicCompiler64/NumOpe_TypeOperation.cpp
- Timestamp:
- Jul 22, 2007, 4:58:47 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler64/NumOpe_TypeOperation.cpp
r224 r226 11 11 if(type==DEF_LONG){ 12 12 //movsxd reg64,reg32 13 op_movsxd(reg,reg);13 compiler.codeGenerator.op_movsxd(reg,reg); 14 14 } 15 15 else if(type==DEF_DWORD){ … … 18 18 else if(type==DEF_INTEGER || (Smoothie::IsUnicode()&&type==DEF_CHAR)){ 19 19 //movsx reg64,reg16 20 op_movsx64_FromReg16(reg,reg);20 compiler.codeGenerator.op_movsx64_FromReg16(reg,reg); 21 21 } 22 22 else if(type==DEF_WORD){ 23 23 //and reg,000000000000FFFFh 24 op_and64_value(reg,(int)0xFFFF);24 compiler.codeGenerator.op_and64_value(reg,(int)0xFFFF); 25 25 } 26 26 else if(type==DEF_SBYTE || (Smoothie::IsUnicode()==false&&type==DEF_CHAR)){ 27 27 //movsx reg64,reg8 28 op_movsx64_FromReg8(reg,reg);28 compiler.codeGenerator.op_movsx64_FromReg8(reg,reg); 29 29 } 30 30 else if(type==DEF_BYTE || type==DEF_BOOLEAN){ 31 31 //and reg,00000000000000FFh 32 op_and64_value(reg,(int)0x00FF);32 compiler.codeGenerator.op_and64_value(reg,(int)0x00FF); 33 33 } 34 34 } … … 36 36 if(type==DEF_INTEGER || (Smoothie::IsUnicode()&&type==DEF_CHAR)){ 37 37 //movsx reg32,reg16 38 op_movsx32_FromReg16(reg,reg);38 compiler.codeGenerator.op_movsx32_FromReg16(reg,reg); 39 39 } 40 40 else if(type==DEF_WORD){ 41 41 //and reg,0000FFFFh 42 op_and32_value(reg,(int)0xFFFF);42 compiler.codeGenerator.op_and32_value(reg,(int)0xFFFF); 43 43 } 44 44 else if(type==DEF_SBYTE || (Smoothie::IsUnicode()==false&&type==DEF_CHAR)){ 45 45 //movsx reg32,reg8 46 op_movsx32_FromReg8(reg,reg);46 compiler.codeGenerator.op_movsx32_FromReg8(reg,reg); 47 47 } 48 48 else if(type==DEF_BYTE || type==DEF_BOOLEAN){ 49 49 //and reg,000000FFh 50 op_and32_value(reg,(int)0xFF);50 compiler.codeGenerator.op_and32_value(reg,(int)0xFF); 51 51 } 52 52 } … … 54 54 if(type==DEF_SBYTE || (Smoothie::IsUnicode()==false&&type==DEF_CHAR)){ 55 55 //movsx reg16,reg8 56 op_movsx16_FromReg8(reg,reg);56 compiler.codeGenerator.op_movsx16_FromReg8(reg,reg); 57 57 } 58 58 else if(type==DEF_BYTE){ 59 59 //and reg,000000FFh 60 op_and32_value(reg,(int)0xFF);60 compiler.codeGenerator.op_and32_value(reg,(int)0xFF); 61 61 } 62 62 } … … 70 70 71 71 //cvtss2sd 72 op_cvtss2sd(xmm_reg,xmm_reg);72 compiler.codeGenerator.op_cvtss2sd(xmm_reg,xmm_reg); 73 73 } 74 74 else if(Is64Type(type)){ … … 76 76 77 77 //cvtsi2sd xmm_reg,reg 78 op_cvtsi2sd_reg(sizeof(_int64),xmm_reg,general_reg);78 compiler.codeGenerator.op_cvtsi2sd_reg(sizeof(_int64),xmm_reg,general_reg); 79 79 80 80 if(type==DEF_QWORD){ … … 82 82 83 83 //test reg,reg 84 op_test(general_reg,general_reg);84 compiler.codeGenerator.op_test(general_reg,general_reg); 85 85 86 86 //jge 9 … … 109 109 110 110 //cvtsi2sd xmm_reg,reg 111 op_cvtsi2sd_reg(sizeof(_int64),xmm_reg,general_reg);111 compiler.codeGenerator.op_cvtsi2sd_reg(sizeof(_int64),xmm_reg,general_reg); 112 112 } 113 113 else{ … … 118 118 119 119 //cvtsi2sd xmm_reg,reg 120 op_cvtsi2sd_reg(sizeof(long),xmm_reg,general_reg);120 compiler.codeGenerator.op_cvtsi2sd_reg(sizeof(long),xmm_reg,general_reg); 121 121 } 122 122 } … … 126 126 127 127 //cvtsd2ss 128 op_cvtsd2ss(xmm_reg,xmm_reg);128 compiler.codeGenerator.op_cvtsd2ss(xmm_reg,xmm_reg); 129 129 } 130 130 else if(type==DEF_SINGLE){ … … 135 135 136 136 //cvtsi2ss xmm_reg,reg 137 op_cvtsi2ss_reg(sizeof(_int64),xmm_reg,general_reg);137 compiler.codeGenerator.op_cvtsi2ss_reg(sizeof(_int64),xmm_reg,general_reg); 138 138 139 139 if(type==DEF_QWORD){ … … 141 141 142 142 //test reg,reg 143 op_test(general_reg,general_reg);143 compiler.codeGenerator.op_test(general_reg,general_reg); 144 144 145 145 //jge 9 … … 168 168 169 169 //cvtsi2ss xmm_reg,reg 170 op_cvtsi2ss_reg(sizeof(_int64),xmm_reg,general_reg);170 compiler.codeGenerator.op_cvtsi2ss_reg(sizeof(_int64),xmm_reg,general_reg); 171 171 } 172 172 else{ … … 177 177 178 178 //cvtsi2ss xmm_reg,reg 179 op_cvtsi2ss_reg(sizeof(long),xmm_reg,general_reg);179 compiler.codeGenerator.op_cvtsi2ss_reg(sizeof(long),xmm_reg,general_reg); 180 180 } 181 181 } … … 185 185 if(Is64Type(NewType)){ 186 186 //cvttsd2si reg,xmm_reg 187 op_cvttsd2si_xmm(sizeof(_int64),reg,xmm_reg);187 compiler.codeGenerator.op_cvttsd2si_xmm(sizeof(_int64),reg,xmm_reg); 188 188 } 189 189 else{ 190 190 //cvttsd2si reg,xmm_reg 191 op_cvttsd2si_xmm(sizeof(long),reg,xmm_reg);191 compiler.codeGenerator.op_cvttsd2si_xmm(sizeof(long),reg,xmm_reg); 192 192 } 193 193 } … … 195 195 if(Is64Type(NewType)){ 196 196 //cvttss2si reg,xmm_reg 197 op_cvttss2si_xmm(sizeof(_int64),reg,xmm_reg);197 compiler.codeGenerator.op_cvttss2si_xmm(sizeof(_int64),reg,xmm_reg); 198 198 } 199 199 else{ 200 200 //cvttss2si reg,xmm_reg 201 op_cvttss2si_xmm(sizeof(long),reg,xmm_reg);201 compiler.codeGenerator.op_cvttss2si_xmm(sizeof(long),reg,xmm_reg); 202 202 } 203 203 }
Note:
See TracChangeset
for help on using the changeset viewer.