Changeset 123 in dev for BasicCompiler32/Compile_Object.cpp
- Timestamp:
- May 14, 2007, 1:08:14 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
BasicCompiler32/Compile_Object.cpp
r94 r123 134 134 obp+=sizeof(long); 135 135 136 //add eax, sizeof(DWORD)*2136 //add eax,OBJECT_HEAD_SIZE 137 137 OpBuffer[obp++]=(char)0x05; 138 *((long *)(OpBuffer+obp))= sizeof(DWORD)*3;138 *((long *)(OpBuffer+obp))=OBJECT_HEAD_SIZE; 139 139 obp+=sizeof(long); 140 140 … … 150 150 obp+=sizeof(long); 151 151 152 //push size 152 //push size + OBJECT_HEAD_SIZE 153 153 OpBuffer[obp++]=(char)0x68; 154 *((long *)(OpBuffer+obp))=typeSize +sizeof(DWORD)*3;154 *((long *)(OpBuffer+obp))=typeSize + OBJECT_HEAD_SIZE; 155 155 obp+=sizeof(long); 156 156 } … … 176 176 /* 177 177 確保されたヒープ領域のポインタ(callocの戻り値eax)をpPtrとすると、 178 pPtr-=sizeof(DWORD)*3179 178 pPtr[0]=オブジェクトの個数 180 179 pPtr[1]=オブジェクトのサイズ 181 180 pPtr[2]=デストラクタの関数ポインタ 181 pPtr[3]=reserve 182 182 */ 183 183 … … 198 198 obp+=sizeof(long); 199 199 200 //mov dword ptr[eax],ecx 200 //mov dword ptr[eax],ecx(オブジェクトのサイズ) 201 201 OpBuffer[obp++]=(char)0x89; 202 202 OpBuffer[obp++]=(char)0x08; … … 217 217 obp+=sizeof(long); 218 218 219 //mov dword ptr[eax],ecx 219 //mov dword ptr[eax],ecx(デストラクタの関数ポインタ) 220 220 OpBuffer[obp++]=(char)0x89; 221 221 OpBuffer[obp++]=(char)0x08; 222 222 223 //add eax,sizeof(DWORD) 224 OpBuffer[obp++]=(char)0x05; 225 *((long *)(OpBuffer+obp))=sizeof(DWORD); 226 obp+=sizeof(long); 227 228 229 // リザーブ領域 223 230 //add eax,sizeof(DWORD) 224 231 OpBuffer[obp++]=(char)0x05; … … 251 258 252 259 //sub eax,sizeof(DWORD)*3 253 OpBuffer[obp++]=(char)0x83; 254 OpBuffer[obp++]=(char)0xE8; 255 OpBuffer[obp++]=(char)0x0C; 260 op_sub_RV8( REG_EAX, OBJECT_HEAD_SIZE ); 256 261 257 262 //push eax … … 283 288 OpBuffer[obp++]=(char)0x10; 284 289 290 //add eax,sizeof(DWORD) 291 OpBuffer[obp++]=(char)0x05; 292 *((long *)(OpBuffer+obp))=sizeof(DWORD); 293 obp+=sizeof(long); 294 295 296 // リザーブ領域 285 297 //add eax,sizeof(DWORD) 286 298 OpBuffer[obp++]=(char)0x05;
Note:
See TracChangeset
for help on using the changeset viewer.