Changeset 226 in dev for trunk/abdev/BasicCompiler64/Opcode.h
- Timestamp:
- Jul 22, 2007, 4:58:47 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler64/Opcode.h
r220 r226 3 3 #include <Type.h> 4 4 #include <Procedure.h> 5 6 7 //レジスタを示す定数 8 #define REG_EAX 1 9 #define REG_EBX 2 10 #define REG_ECX 3 11 #define REG_EDX 4 12 #define REG_ESP 5 13 #define REG_EBP 6 14 15 #define REGISTER_OPERAND(reg) (reg&0x07) 16 17 #define REG_NON -1 18 #define REG_RAX 0x00 //reg:000 19 #define REG_RCX 0x01 //reg:001 20 #define REG_RDX 0x02 //reg:010 21 #define REG_RBX 0x03 //reg:011 22 #define REG_RSP 0x04 //reg:100 23 #define REG_RBP 0x05 //reg:101 24 #define REG_RSI 0x06 //reg:110 25 #define REG_RDI 0x07 //reg:111 26 #define REG_R8 0x08 //reg:000(REXプリフィックス) 27 #define REG_R9 0x09 //reg:001(REXプリフィックス) 28 #define REG_R10 0x0A //reg:010(REXプリフィックス) 29 #define REG_R11 0x0B //reg:011(REXプリフィックス) 30 #define REG_R12 0x0C //reg:100(REXプリフィックス) 31 #define REG_R13 0x0D //reg:101(REXプリフィックス) 32 #define REG_R14 0x0E //reg:110(REXプリフィックス) 33 #define REG_R15 0x0F //reg:111(REXプリフィックス) 34 35 #define REG_XMM0 0x10 //reg:000 36 #define REG_XMM1 0x11 //reg:001 37 #define REG_XMM2 0x12 //reg:010 38 #define REG_XMM3 0x13 //reg:011 39 #define REG_XMM4 0x14 //reg:100 40 #define REG_XMM5 0x15 //reg:101 41 #define REG_XMM6 0x16 //reg:110 42 #define REG_XMM7 0x17 //reg:111 43 #define REG_XMM8 0x18 //reg:000 44 #define REG_XMM9 0x19 //reg:001 45 #define REG_XMM10 0x1A //reg:010 46 #define REG_XMM11 0x1B //reg:011 47 #define REG_XMM12 0x1C //reg:100 48 #define REG_XMM13 0x1D //reg:101 49 #define REG_XMM14 0x1E //reg:110 50 #define REG_XMM15 0x1F //reg:111 51 52 #define IS_XMM_REG(reg) (reg&0x10) 53 5 #include "MachineFixed.h" 54 6 55 7 … … 426 378 427 379 428 429 ////////////////////////////////430 // AMD64機械語生成に利用する関数郡431 ////////////////////////////////432 433 //Mod(モード)434 #define MOD_BASE (char)0x00435 #define MOD_DISP32 (char)0xFF436 #define MOD_BASE_DISP8 (char)0x40437 #define MOD_BASE_DISP32 (char)0x80438 #define MOD_REG (char)0xC0439 440 #define USE_OFFSET 1441 #define NON_OFFSET 0442 443 //amd64_main.cpp444 380 BOOL IsSafeReg(int reg); 445 void op_push(int reg);446 void op_push_value(long data);447 void op_pop(int reg);448 void op_mov_RV (int op_size,int reg,int i32data);449 void op_mov_RV64 (int reg,_int64 i64data);450 void op_mov_RM (int op_size,int reg,int base_reg,int offset,char mod);451 void op_mov_RM_ex (int op_size,int reg,int base_reg1,int base_reg2,int offset,BOOL bUseOffset);452 void op_mov_MR (int op_size,int reg,int base_reg,int offset,char mod);453 void op_mov_MR_ex (int op_size,int reg,int base_reg1,int base_reg2,int offset,BOOL bUseOffset);454 void op_mov_MV (int op_size,int base_reg,int offset,BOOL bUseOffset,int i32data);455 void op_mov_RR (int reg1,int reg2);456 void op_mov64_ToReg (int reg,_int64 i64data);457 void op_mov64_ToReg (int reg,int i32data);458 void op_movsxd (int reg64,int reg32);459 void op_movsx64_FromReg16 (int reg64,int reg16);460 void op_movsx64_FromReg8 (int reg64,int reg8);461 void op_movsx32_FromReg16 (int reg32,int reg16);462 void op_movsx32_FromReg8 (int reg32,int reg8);463 void op_movsx16_FromReg8 (int reg32,int reg8);464 void op_inc (int reg);465 void op_dec (int reg);466 void op_add_RM (int op_size,int reg,int base_reg,int offset,char mod);467 void op_add_RV (int reg,int offset);468 void op_add64_reg (int reg1,int reg2);469 void op_add32_reg (int reg1,int reg2);470 void op_sub_RV (int op_size,int reg,int i32data);471 void op_sub64_reg (int reg1,int reg2);472 void op_sub32_reg (int reg1,int reg2);473 void op_sbb_RR ( int op_size, int reg1, int reg2 );474 void op_imul_RR (int op_size,int reg1,int reg2);475 void op_imul_RV (int op_size,int reg,int i32data);476 void op_div64_reg (int reg);477 void op_idiv64_reg (int reg);478 void op_shl_reg (int op_size,int reg);479 void op_sar_reg (int op_size,int reg);480 void op_shr_reg (int op_size,int reg);481 void op_and_reg (int op_size,int reg1,int reg2);482 void op_and64_value (int reg,int offset);483 void op_and32_value (int reg,int offset);484 void op_or_reg (int op_size,int reg1,int reg2);485 void op_xor_reg (int op_size,int reg1,int reg2);486 void op_not_reg (int op_size,int reg);487 void op_neg ( int reg );488 void op_test (int reg1,int reg2);489 void op_cmp_reg (int op_size,int reg1,int reg2);490 void op_cmp_value (int op_size,int reg,char byte_data);491 void op_setne (int reg);492 void op_movlpd_MR (int xmm_reg,int base_reg,int offset,char mod);493 void op_movlpd_RM (int xmm_reg,int base_reg,int offset,char mod);494 void op_movsd_RR (int xmm_reg1,int xmm_reg2);495 void op_movsd_MR (int xmm_reg,int base_reg,int offset,char mod);496 void op_movss_RR (int xmm_reg1,int xmm_reg2);497 void op_movss_RM (int xmm_reg,int base_reg,int offset,char mod);498 void op_movss_MR (int xmm_reg,int base_reg,int offset,char mod);499 void op_movd_RX (int reg,int xmm_reg);500 void op_cvtsd2ss (int xmm_reg1,int xmm_reg2);501 void op_cvtss2sd (int xmm_reg1,int xmm_reg2);502 void op_cvttsd2si_xmm (int op_size,int reg,int xmm_reg);503 void op_cvttss2si_xmm (int op_size,int reg,int xmm_reg);504 void op_cvtsi2sd_reg (int op_size,int xmm_reg,int reg);505 void op_cvtsi2ss_reg (int op_size,int xmm_reg,int reg);506 void op_comisd (int xmm_reg1,int xmm_reg2);507 void op_comiss (int xmm_reg1,int xmm_reg2);508 void op_rep_movs (int op_size);509 void op_add_rsp(int num);510 void op_sub_rsp(int num);511 void op_add_esp(int num);512 void op_sub_esp(int num);513 void op_fld_ptr_esp(int type);514 void op_zero_reg(int reg);515 void op_call( const UserProc *pUserProc );516 void op_call( const DllProc *pDllProc );517 void op_ret();
Note:
See TracChangeset
for help on using the changeset viewer.