Changeset 228 in dev for trunk/abdev/BasicCompiler64/Compile_Var.cpp
- Timestamp:
- Jul 23, 2007, 3:24:20 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler64/Compile_Var.cpp
r226 r228 72 72 73 73 //add r11,reg 74 compiler.codeGenerator.op_add 64_reg(REG_R11,reg);74 compiler.codeGenerator.op_add_RR(REG_R11,reg); 75 75 } 76 76 void SetRelativeOffset( RELATIVE_VAR &relativeVar ){ … … 176 176 177 177 //add r12,reg 178 compiler.codeGenerator.op_add 64_reg(REG_R12,reg);178 compiler.codeGenerator.op_add_RR(REG_R12,reg); 179 179 180 180 HeapDefaultFree(pParm[i]); … … 182 182 183 183 //imul r12,TypeSize 184 OpBuffer[obp++]=(char)0x4D; 185 OpBuffer[obp++]=(char)0x69; 186 OpBuffer[obp++]=(char)0xE4; 187 *((long *)(OpBuffer+obp))=type.GetSize(); 188 obp+=sizeof(long); 184 compiler.codeGenerator.op_imul_RV( sizeof(_int64), REG_R12, type.GetSize() ); 189 185 190 186 //mov r11,qword ptr[rsp+offset] ※スタックフレームを利用 … … 192 188 193 189 //add r11,r12 194 OpBuffer[obp++]=(char)0x4D; 195 OpBuffer[obp++]=(char)0x03; 196 OpBuffer[obp++]=(char)0xDC; 190 compiler.codeGenerator.op_add_RR( REG_R11, REG_R12 ); 197 191 198 192 return true; … … 275 269 if(offset){ 276 270 //add r11,offset 277 OpBuffer[obp++]=(char)0x49; 278 OpBuffer[obp++]=(char)0x81; 279 OpBuffer[obp++]=(char)0xC3; 280 *((long *)(OpBuffer+obp))=offset; 281 obp+=sizeof(long); 271 compiler.codeGenerator.op_add_RV( REG_R11, offset ); 282 272 } 283 273 … … 1279 1269 1280 1270 //add r11,rsp 1281 compiler.codeGenerator.op_add 64_reg(REG_R11,REG_RSP);1271 compiler.codeGenerator.op_add_RR(REG_R11,REG_RSP); 1282 1272 1283 1273 //mov reg,r11
Note:
See TracChangeset
for help on using the changeset viewer.