Changeset 244 in dev for trunk/abdev/BasicCompiler_Common
- Timestamp:
- Jul 27, 2007, 12:14:00 PM (17 years ago)
- Location:
- trunk/abdev/BasicCompiler_Common/include
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler_Common/include/CodeGenerator.h
r243 r244 300 300 void op_ret(); 301 301 void op_ret( short stackFrameSize ); 302 void op_addressof( int reg, const UserProc *pUserProc ); 302 303 #endif 303 304 -
trunk/abdev/BasicCompiler_Common/include/NativeCode.h
r241 r244 9 9 void AddLocalVarAddrSchedule(); 10 10 void ObpPlus( int step = 1 ); 11 12 class UserProc; 11 13 12 14 class Schedule … … 20 22 DataTable, // データテーブル スケジュール 21 23 Relocation, // リロケーション情報スケジュール 24 UserProc, // ユーザ定義関数呼び出し側スケジュール 25 AddressOf, // ユーザ定義関数位置スケジュール 22 26 }; 23 27 24 28 private: 25 29 Type type; 26 int offset; 30 long offset; 31 32 union{ 33 LONG_PTR lpValue; 34 const ::UserProc *pUserProc; 35 }; 27 36 28 37 // XMLシリアライズ用 … … 39 48 { 40 49 } 41 Schedule( Type type, intoffset )50 Schedule( Type type, long offset ) 42 51 : type( type ) 43 52 , offset( offset ) 53 , lpValue( 0 ) 54 { 55 } 56 Schedule( const ::UserProc *pUserProc, long offest ) 57 : type( Schedule::UserProc ) 58 , offset( offset ) 59 , pUserProc( pUserProc ) 44 60 { 45 61 } 46 62 ~Schedule() 47 63 { 64 } 65 66 void SpecifyAddressOf() 67 { 68 if( type != Schedule::UserProc ) 69 { 70 SetError(); 71 } 72 type = Schedule::AddressOf; 48 73 } 49 74 }; … … 191 216 { 192 217 case Schedule::None: 218 // 何もしない 193 219 break; 194 220 case Schedule::GlobalVar: … … 204 230 break; 205 231 case Schedule::Relocation: 232 // 未完成 206 233 break; 207 234 default: … … 214 241 ObpPlus( sizeof(long) ); 215 242 } 243 void PutUserProcSchedule( const UserProc *pUserProc, bool isCall ) 244 { 245 Schedule schedule( pUserProc, size ); 246 if( isCall == false ) 247 { 248 schedule.SpecifyAddressOf(); 249 } 250 schedules.push_back( schedule ); 251 252 *((long *)(codeBuffer+size))=0; 253 size += sizeof(long); 254 255 256 257 // 未完成 258 if( isCall ) 259 { 260 pobj_SubAddrSchedule->add(pUserProc,1); 261 } 262 else 263 { 264 pobj_SubAddrSchedule->add(pUserProc,0); 265 } 266 extern char *OpBuffer; 267 extern int obp; 268 *((long *)(OpBuffer+obp))=0; 269 ObpPlus( sizeof(long) ); 270 } 216 271 void Put( short s ) 217 272 {
Note:
See TracChangeset
for help on using the changeset viewer.