Changeset 225 in dev for trunk/abdev/BasicCompiler32/CParameter.cpp
- Timestamp:
- Jul 21, 2007, 11:47:40 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler32/CParameter.cpp
r206 r225 1 1 #include "stdafx.h" 2 3 #include <Compiler.h> 2 4 3 5 #include "../BasicCompiler_Common/common.h" … … 72 74 73 75 //push esp 74 op_push( REG_ESP );76 compiler.codeGenerator.op_push( REG_ESP ); 75 77 76 78 nCountOfTempObjects++; … … 111 113 //call free 112 114 extern const UserProc *pSub_free; 113 op_call(pSub_free);115 compiler.codeGenerator.op_call(pSub_free); 114 116 } 115 117 else{ … … 118 120 //pop ... 上位32ビット 119 121 //pop ... 下位32ビット 120 op_add_esp( PTR_SIZE * 3 );122 compiler.codeGenerator.op_add_esp( PTR_SIZE * 3 ); 121 123 } 122 124 else{ 123 125 //pop ... 参照を消す 124 126 //pop ... 値を消す 125 op_add_esp( PTR_SIZE * 2 );127 compiler.codeGenerator.op_add_esp( PTR_SIZE * 2 ); 126 128 } 127 129 } … … 134 136 135 137 //push object_size 136 op_push_V(object_size);138 compiler.codeGenerator.op_push_V(object_size); 137 139 138 140 //call calloc 139 141 extern const UserProc *pSub_calloc; 140 op_call(pSub_calloc);142 compiler.codeGenerator.op_call(pSub_calloc); 141 143 142 144 //push eax(ここでプッシュされた値が実際にパラメータとして引き渡される) 143 op_push(REG_EAX);145 compiler.codeGenerator.op_push(REG_EAX); 144 146 145 147 //push eax 146 op_push(REG_EAX);148 compiler.codeGenerator.op_push(REG_EAX); 147 149 148 150 Type calcType; … … 332 334 333 335 //mov eax, dword ptr[esp+offset] 334 op_mov_RM(336 compiler.codeGenerator.op_mov_RM( 335 337 sizeof(long), 336 338 REG_EAX, … … 340 342 341 343 //push eax 342 op_push(REG_EAX);344 compiler.codeGenerator.op_push(REG_EAX); 343 345 } 344 346 else{ … … 378 380 379 381 //push eax 380 op_push(REG_EAX);382 compiler.codeGenerator.op_push(REG_EAX); 381 383 } 382 384 }
Note:
See TracChangeset
for help on using the changeset viewer.