Changeset 64 in dev for BasicCompiler32/op32_main.cpp
- Timestamp:
- Mar 8, 2007, 2:49:34 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
BasicCompiler32/op32_main.cpp
r36 r64 372 372 373 373 374 //////////////////////// 375 // imul関連 376 //////////////////////// 377 378 void op_imul_RR(int reg1,int reg2){ 379 //imul reg1,reg2 380 381 //オペコード 382 OpBuffer[obp++]=(char)0x0F; 383 OpBuffer[obp++]=(char)0xAF; 384 385 //レジスタ 386 OpBuffer[obp++]=(char)(0xC0| REGISTER_OPERAND(reg1)<<3 | REGISTER_OPERAND(reg2)); 387 } 388 389 void op_imul_RV(int reg,int i32data){ 390 //imul reg,i32data 391 392 if(-128<=i32data&&i32data<=127){ 393 //オペコード 394 OpBuffer[obp++]=(char)0x6B; 395 396 //レジスタ 397 OpBuffer[obp++]=(char)(0xC0| REGISTER_OPERAND(reg)<<3 | REGISTER_OPERAND(reg)); 398 399 //値 400 OpBuffer[obp++]=(char)i32data; 401 } 402 else{ 403 //オペコード 404 OpBuffer[obp++]=(char)0x69; 405 406 //レジスタ 407 OpBuffer[obp++]=(char)(0xC0| REGISTER_OPERAND(reg)<<3 | REGISTER_OPERAND(reg)); 408 409 //値 410 *((long *)(OpBuffer+obp))=i32data; 411 obp+=sizeof(long); 412 } 413 } 414 415 374 416 375 417 ////////////////////// … … 468 510 void op_push(int reg){ 469 511 //push reg 512 513 if( reg == REG_NON ){ 514 op_sub_esp( PTR_SIZE ); 515 return; 516 } 470 517 471 518 //オペコード、レジスタ … … 489 536 //pop reg 490 537 538 if( reg == REG_NON ){ 539 op_add_esp( PTR_SIZE ); 540 return; 541 } 542 491 543 //オペコード、レジスタ 492 544 __op_format(0,(char)0x58,reg); … … 532 584 // cmp関連 533 585 ///////////////////// 586 void op_cmp_RR( int reg1, int reg2 ){ 587 //オペコード 588 OpBuffer[obp++]=(char)0x3B; 589 590 //レジスタ 591 OpBuffer[obp++]=(char)(0xC0| REGISTER_OPERAND(reg1)<<3 | REGISTER_OPERAND(reg2)); 592 } 534 593 void op_cmp_value(int op_size,int reg,char byte_data){ 535 594 //cmp reg,byte_data
Note:
See TracChangeset
for help on using the changeset viewer.