Changeset 123 in dev for BasicCompiler64
- Timestamp:
- May 14, 2007, 1:08:14 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
BasicCompiler64/Compile_Object.cpp
r94 r123 121 121 op_imul_RV(sizeof(_int64),REG_RAX,typeSize); 122 122 123 //add rax, PTR_SIZE*3124 op_add_RV(REG_RAX, PTR_SIZE*3);123 //add rax,OBJECT_HEAD_SIZE 124 op_add_RV(REG_RAX,OBJECT_HEAD_SIZE); 125 125 126 126 //mov rcx,rax … … 133 133 op_mov_RV(sizeof(_int64),REG_RBX,1); 134 134 135 //mov rcx,typeSize+ PTR_SIZE*3136 op_mov_RV(sizeof(_int64),REG_RCX,typeSize+ PTR_SIZE*3);135 //mov rcx,typeSize+OBJECT_HEAD_SIZE 136 op_mov_RV(sizeof(_int64),REG_RCX,typeSize+OBJECT_HEAD_SIZE); 137 137 } 138 138 … … 157 157 /* 158 158 確保されたヒープ領域のポインタ(callocの戻り値eax)をpPtrとすると、 159 pPtr-= sizeof(DWORD)*3159 pPtr-=OBJECT_HEAD_SIZE ... ( sizeof(DWORD)*4 ) 160 160 pPtr[0]=オブジェクトの個数 161 161 pPtr[1]=オブジェクトのサイズ 162 162 pPtr[2]=デストラクタの関数ポインタ 163 pPtr[3]=reserve 163 164 */ 164 165 … … 181 182 if( method == NULL ) return; 182 183 183 //mov rcx,DestructorProcAddr 184 //mov rcx,DestructorProcAddr(デストラクタの関数ポインタ) 184 185 op_mov_RV(sizeof(_int64),REG_RCX,0); 185 186 obp-=sizeof(long); … … 191 192 op_mov_MR(sizeof(_int64),REG_RCX,REG_RAX,0,MOD_BASE); 192 193 194 //add rax,PTR_SIZE 195 op_add_RV(REG_RAX,PTR_SIZE); 196 197 198 // リザーブ領域 193 199 //add rax,PTR_SIZE 194 200 op_add_RV(REG_RAX,PTR_SIZE); … … 220 226 if(!( tempType.IsObjectPtr() || tempType.IsVoidPtr() )) SetError(122,NULL,cp); 221 227 222 //sub rax, PTR_SIZE*3223 op_sub_RV(sizeof(_int64),REG_RAX, PTR_SIZE*3);228 //sub rax,OBJECT_HEAD_SIZE 229 op_sub_RV(sizeof(_int64),REG_RAX,OBJECT_HEAD_SIZE); 224 230 225 231 //mov qword ptr[rsp+offset],rax ※スタックフレームを利用 … … 244 250 op_mov_RM(sizeof(_int64),REG_RDI,REG_RAX,0,MOD_BASE); 245 251 252 //add rax,PTR_SIZE 253 op_add_RV(REG_RAX,PTR_SIZE); 254 255 256 // リザーブ領域 246 257 //add rax,PTR_SIZE 247 258 op_add_RV(REG_RAX,PTR_SIZE);
Note:
See TracChangeset
for help on using the changeset viewer.