Changeset 345 in dev for trunk/abdev/BasicCompiler64/Compile_Func.cpp
- Timestamp:
- Oct 10, 2007, 1:52:43 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler64/Compile_Func.cpp
r339 r345 121 121 // ->func3 122 122 123 // vtblマスターリストのポインタを取得 123 124 //mov r11,qword ptr[rcx] 124 125 compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_RCX,0,MOD_BASE); 125 126 126 int i2 = pobj_c->GetFuncNumInVtbl( &userProc ); 127 // vtblのポインタを取得 128 //mov r11,dword ptr[r11+vtblMasterListIndex] 129 int vtblMasterListIndex = pobj_c->GetVtblMasterListIndex( &userProc ); 130 compiler.codeGenerator.op_mov_RM( sizeof(_int64), REG_R11, REG_R11, vtblMasterListIndex, MOD_BASE_DISP32 ); 131 132 int vtblIndex = pobj_c->GetFuncNumInVtbl( &userProc ); 127 133 128 134 //mov rax,qword ptr[r11+func_index] 129 if(i2*PTR_SIZE<=0x7F){ 130 compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_RAX,REG_R11,i2*PTR_SIZE,MOD_BASE_DISP8); 131 } 132 else{ 133 compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_RAX,REG_R11,i2*PTR_SIZE,MOD_BASE_DISP32); 135 if( vtblIndex * PTR_SIZE <= 0x7F ) 136 { 137 compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_RAX,REG_R11,vtblIndex*PTR_SIZE,MOD_BASE_DISP8); 138 } 139 else 140 { 141 compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_RAX,REG_R11,vtblIndex*PTR_SIZE,MOD_BASE_DISP32); 134 142 } 135 143 }
Note:
See TracChangeset
for help on using the changeset viewer.