亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dsasm_functions.cpp

?? C語言編寫的反匯編工具
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
			break;
			
		case 0xDE: // FPU Instruction
			{
				switch((BYTE)(*(*Opcode+Pos+1)))
				{
				case 0xC0:case 0xC1:case 0xC2:case 0xC3: 
				case 0xC4:case 0xC5:case 0xC6:case 0xC7: 
					{
						wsprintf(assembly,"faddp %s,st",FpuRegs[reg2]);
					}
					break;
					
				case 0xC8:case 0xC9:case 0xCA:case 0xCB: 
				case 0xCC:case 0xCD:case 0xCE:case 0xCF: 
					{                     
						wsprintf(assembly,"fmulp %s,st",FpuRegs[reg2]);
					}
					break;
					
				case 0xD0:case 0xD1:case 0xD2:case 0xD3: 
				case 0xD4:case 0xD5:case 0xD6:case 0xD7: 
					{
						wsprintf(assembly,"ficom %s",FpuRegs[reg2]);
					}
					break;
					
				case 0xD8:case 0xD9:case 0xDA:case 0xDB: 
				case 0xDC:case 0xDD:case 0xDE:case 0xDF:
					{
						wsprintf(assembly,"ficomp %s",FpuRegs[reg2]);
					}
					break;
					
				case 0xE0:case 0xE1:case 0xE2:case 0xE3: 
				case 0xE4:case 0xE5:case 0xE6:case 0xE7: 
					{
						wsprintf(assembly,"fsubrp %s,st",FpuRegs[reg2]);
					}
					break;
					
				case 0xE9:
					{
						strcpy(assembly,"fcompp");
					}
					break;
					
				case 0xE8:case 0xEA:case 0xEB: 
				case 0xEC:case 0xED:case 0xEE:case 0xEF: 
					{
						wsprintf(assembly,"fsubp %s,st",FpuRegs[reg2]);
					}
					break;
					
				case 0xF0:case 0xF1:case 0xF2:case 0xF3:  
				case 0xF4:case 0xF5:case 0xF6:case 0xF7: 
					{
						wsprintf(assembly,"fdivrp %s,st",FpuRegs[reg2]);
					}
					break;
					
				case 0xF8:case 0xF9:case 0xFA:case 0xFB:  
				case 0xFC:case 0xFD:case 0xFE:case 0xFF: 
					{
						wsprintf(assembly,"fdivp %s,st",FpuRegs[reg2]);
					}
					break;
				}
			}
			break;
			
		case 0xDF: // FPU Instruction
			{
				switch((BYTE)(*(*Opcode+Pos+1)))
				{
                case 0xC0:case 0xC1:case 0xC2:case 0xC3: 
                case 0xC4:case 0xC5:case 0xC6:case 0xC7: 
					{
						wsprintf(assembly,"ffreep %s",FpuRegs[reg2]);
					}
					break;
					
                case 0xC8:case 0xC9:case 0xCA:case 0xCB: 
                case 0xCC:case 0xCD:case 0xCE:case 0xCF: 
					{                     
						lstrcat((*Disasm)->Remarks,"Invalid Instruction");
						strcpy(assembly,"???");
					}
					break;
					
                case 0xD0:case 0xD1:case 0xD2:case 0xD3: 
                case 0xD4:case 0xD5:case 0xD6:case 0xD7: 
					{
						wsprintf(assembly,"fist %s",FpuRegs[reg2]);
					}
					break;
					
                case 0xD8:case 0xD9:case 0xDA:case 0xDB: 
                case 0xDC:case 0xDD:case 0xDE:case 0xDF:
					{
						wsprintf(assembly,"fistp %s",FpuRegs[reg2]);
					}
					break;
					
                case 0xE0:
					{
						strcpy(assembly,"fnstsw ax");
					}
					break;
					
                case 0xE1:case 0xE2:case 0xE3: 
                case 0xE4:case 0xE5:case 0xE6:case 0xE7: 
					{
						wsprintf(assembly,"fbld %s",FpuRegs[reg2]);
					}
					break;
					
                case 0xE9:case 0xE8:case 0xEA:case 0xEB: 
                case 0xEC:case 0xED:case 0xEE:case 0xEF: 
					{
						wsprintf(assembly,"fucomip st,%s",FpuRegs[reg2]);
					}
					break;
					
                case 0xF0:case 0xF1:case 0xF2:case 0xF3:  
                case 0xF4:case 0xF5:case 0xF6:case 0xF7: 
					{
						wsprintf(assembly,"fcomip st,%s",FpuRegs[reg2]);
					}
					break;
					
                case 0xF8:case 0xF9:case 0xFA:case 0xFB:  
                case 0xFC:case 0xFD:case 0xFE:case 0xFF: 
					{
						wsprintf(assembly,"fistp %s",FpuRegs[reg2]);
					}
					break;
				}
			}
			break;
			
		case 0xF6:
			{             
				if(reg1==0 || reg1==1)
				{
					SwapWord((BYTE*)(*Opcode+Pos+1),&wOp,&wMem);
					wsprintf(assembly,"%s %s,%02X",InstructionsSet2[REG],regs[RM][reg2],wOp&0x00FF);
					(*(*index))++;
					m_OpcodeSize++;
					wsprintf(m_Bytes,"%02X",wOp&0x00FF);
					lstrcat(temp,m_Bytes);
				}
				else
					wsprintf(assembly,"%s %s",InstructionsSet2[REG],regs[RM][reg2]);
			}
			break;
			
		case 0xF7:
			{             
				if(reg1==0 || reg1==1)
				{
					if(!PrefixReg) // no 0x66 prefix used (read DWORD)
					{
						SwapDword((BYTE*)(*Opcode+Pos+2),&dwOp,&dwMem);
						wsprintf(assembly,"%s %s,%08X",InstructionsSet2[REG],regs[RM][reg2],dwMem);                 
						wsprintf(m_Bytes," %08X",dwOp);
						(*(*index))+=4; 
						m_OpcodeSize+=4;
					}
					else // prefix 0x66 is being used (read WORD)
					{
						SwapWord((BYTE*)(*Opcode+Pos+2),&wOp,&wMem);
						wsprintf(assembly,"%s %s,%04X",InstructionsSet2[REG],regs[RM][reg2],wMem);                   
						wsprintf(m_Bytes," %04X",wOp);                   
						(*(*index))+=2;
						m_OpcodeSize+=2;
					}
					
					lstrcat(temp,m_Bytes);
				}
				else
					wsprintf(assembly,"%s %s",InstructionsSet2[REG],regs[RM][reg2]);
			}
			break;
			
		case 0xFE: // MIX Instructions (INC,DEC,INVALID,INVALID...)
			{
				wsprintf(assembly,"%s %s",InstructionsSet3[REG],regs[RM][reg2]);
				if(REG>1)
					lstrcat((*Disasm)->Remarks,"Illegal Instruction");
			}
			break;
			
		case 0xFF:
			{
				wsprintf(assembly,"%s %s",InstructionsSet4[REG],regs[RM][reg2]);
				
				if(REG==7)
					lstrcat((*Disasm)->Remarks,"Illegal Instruction");
			}
			break;
			
		case 0x8D:{
			wsprintf(assembly,"%s %s, %s",instruction,regs[RM][reg2],regs[RM][reg1]);
			lstrcat((*Disasm)->Remarks,"Illegal Instruction");
				  }
			break;
			
			// Default General Instructions
		default: wsprintf(assembly,"%s %s, %s",instruction,regs[RM][reg1],regs[RM][reg2]); break;
       }
	   
       lstrcat((*Disasm)->Assembly,assembly);
       (*Disasm)->OpcodeSize=m_OpcodeSize;
       lstrcat((*Disasm)->Opcode,temp);
	   
       (*(*index))+=IndexAdd;
       // strcpy(menemonic,assembly);
    }
	
    return; // RET
}

void Mod_RM_SIB(
				DISASSEMBLY **Disasm,
				char **Opcode, int pos, 
				bool AddrPrefix,
				int SEG,
				DWORD **index,
				BYTE Bit_d, 
				BYTE Bit_w, 
				char *instruction,
				BYTE Op,
				bool PrefixReg,
				bool PrefixSeg,
				bool PrefixAddr
				)
{
/*
This Function will resolve BigSet menemonics: 
ADC, ADD, AND, CMP, MOV, OR, SBB, SUB, XOR,ARPL, BOUND..
We analyze the opcode using ;
BitD, BitW,SIB ( SS III BBB : Sacle-Index-Base)
MOD/RM
    */
	
	// Set Defaults    
    DWORD dwOp,dwMem;
	int RM=REG8,SCALE=0,SIB,ADDRM=REG32;
    WORD wOp,wMem;
    bool bound=0,UsesFPU=0;
    char RSize[10]="byte",Aritmathic[5]="+",tempAritmathic[5]="+";
	BYTE reg1=0,reg2=0,REG=0,Extension=0,FOpcode=0;
    char menemonic[128]="",tempMeme[128]="",Addr[15]="",temp[128]="";
	char instr[50]="";
	
	
    // Get used Register
	// Get target register, example:
	// 1. add byte ptr [ecx], -> al <-
	// 2. add -> al <- ,byte ptr [ecx]
    REG=(BYTE)(*(*Opcode+pos+1)); 
	REG>>=3;
	REG&=0x07;
	
    //Displacement MOD (none|BYTE/WORD|DWORD)
	Extension=(BYTE)(*(*Opcode+pos+1))>>6;
	/*
	There are 3 types of Displacement to RegMem
	00 -> [00] 000 000 ; no byte extention ([RegMem])
	40->  [01] 000 000 ; 1 byte extenton ([RegMem+XX])
	80 -> [10] 000 000 ; 4 bytes extention ([RegMem+XXXXXXXX])
	*/
	
    //===================//
    // Bitwise OverRides //
    //===================//
	// Arpl, Bound, Test, Xchg menemonics are special cases! when alone.
	// so we need to set specific static bits for d/w
    // We specify Size of Data corresponding to each mnemonic.
	
	switch((BYTE)(*(*Opcode+pos)))
	{
	case 0x20:            { PrefixReg=0;                                        }     break; // Force Byte Size Regardless Operands.
	case 0x39: case 0x3B:                     strcpy(RSize,regSize[1]);               break; // DWORD
	case 0x63:            { Bit_d=0; Bit_w=1; strcpy(RSize,regSize[1]); }             break; // DWORD
	case 0x62:            { RM=REG32; bound=1; Bit_d=1; Bit_w=0; strcpy(RSize,regSize[0]); }    break; // QWORD
	case 0x69:            { Bit_d=0; Bit_w=1; strcpy(RSize,regSize[1]);         }     break; // DWORD
	case 0x6B:            { Bit_d=0; Bit_w=1; strcpy(RSize,regSize[1]);         }     break; // DWORD
	case 0x84: case 0x86: { Bit_d=0; Bit_w=0; }                                       break; // BYTE
	case 0x85: case 0x87: { Bit_d=0; Bit_w=1; strcpy(RSize,regSize[1]); }             break; // DWORD
	case 0x80: case 0x82: case 0xC6: case 0xF6:{ Bit_d=0;Bit_w=0; strcpy(RSize,regSize[3]); } break; // BYTE
	case 0x81: case 0x83: case 0xC7: case 0xF7: case 0x89:{ Bit_d=0;Bit_w=1; strcpy(RSize,regSize[1]); } break;	
	case 0x8B: strcpy(RSize,regSize[1]);                                              break; // DWORD
	case 0x8C: case 0x8E: { strcpy(RSize,regSize[2]); }                               break; // WORD
	case 0x8D: case 0x8F: { Bit_d=1; Bit_w=1; strcpy(RSize,regSize[1]); }             break; // POP/LEA
	case 0xC0:            { Bit_d=1; Bit_w=0;}                                        break; // BYTE
	case 0xC1:            { Bit_d=1; Bit_w=1; strcpy(RSize,regSize[1]); }             break; // MIX
	case 0xC4: case 0xC5: { RM=REG32; Bit_d=1; Bit_w=0; strcpy(RSize,regSize[4]); }             break; // LES/LDS
	case 0xD0: case 0xD2: { Bit_d=0; Bit_w=0; strcpy(RSize,regSize[3]); }             break; // MIX
	case 0xD1: case 0xD3: { Bit_d=0; Bit_w=1; strcpy(RSize,regSize[1]); }             break; // MIXED
	case 0xD8:            { UsesFPU=1; Bit_d=0; Bit_w=1; strcpy(RSize,regSize[1]); }  break; // FPU
	case 0xD9:{ 
		UsesFPU=1; Bit_d=0; Bit_w=0; 
		switch(REG)
		{
		case 0: case 2: case 3:strcpy(RSize,regSize[1]); break; // DWORD (REAL4)
		case 4: case 6: strcpy(RSize,regSize[6]);        break; // 28Bytes                                       
		case 5: case 7: strcpy(RSize,regSize[2]);        break; // WORD (REAL2)
		}
		
			  }
		break; // FPU
		
	case 0xDA: { UsesFPU=1; Bit_d=0; Bit_w=1; strcpy(RSize,regSize[1]); }                                         break; // FPU
	case 0xDB: { UsesFPU=1; Bit_d=0; Bit_w=0; if(REG<4) strcpy(RSize,regSize[1]); else strcpy(RSize,regSize[5]);} break; // FPU
	case 0xDC: { UsesFPU=1; Bit_d=0; Bit_w=0; strcpy(RSize,regSize[0]); }                                         break; // FPU
	case 0xDD: { 
		UsesFPU=1; Bit_d=0; Bit_w=0;
		switch(REG)
		{
		case 0: case 1: case 2: case 3: strcpy(RSize,regSize[0]); break; // QWORD
		case 4: case 5: case 6: strcpy(RSize,regSize[7]);         break; // (108)Byte
		case 7: strcpy(RSize,regSize[2]);                         break; // WORD
		}
			   }
		break; // FPU
		
	case 0xDE: { UsesFPU=1; Bit_d=0; Bit_w=0; strcpy(RSize,regSize[2]); }     break; // WORD
	case 0xDF: {
		UsesFPU=1; Bit_d=0; Bit_w=0;
		switch(REG)
		{
		case 0: case 1: case 2: case 3: strcpy(RSize,regSize[2]); break; // WORD
		case 4: case 6: strcpy(RSize,regSize[5]);                 break; // TByte
		case 5: case 7: strcpy(RSize,regSize[0]);                 break; // QWord
		}
			   }
		break;
	case 0xFE: { Bit_d=0; Bit_w=0; strcpy(RSize,regSize[3]); }                 break; // BYTE

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本高清不卡一区| 日韩一区在线播放| 1024精品合集| 免费成人在线网站| 在线免费观看日韩欧美| 国产亚洲成年网址在线观看| 偷窥国产亚洲免费视频| 成人av在线看| 精品99一区二区| 亚洲一区精品在线| 丁香六月综合激情| 91麻豆精品久久久久蜜臀| 最新高清无码专区| 国产99久久久国产精品免费看| 日韩欧美黄色影院| 亚洲二区在线视频| 97久久精品人人做人人爽| 国产亚洲短视频| 国产一区二区三区最好精华液| 555www色欧美视频| 亚洲va天堂va国产va久| 色欧美日韩亚洲| 一色桃子久久精品亚洲| 成人蜜臀av电影| 国产精品萝li| 成人福利视频网站| 国产精品少妇自拍| 东方欧美亚洲色图在线| 国产亚洲女人久久久久毛片| 国产精品自拍三区| 国产亚洲制服色| 国产成人免费9x9x人网站视频| 精品久久久影院| 国产中文字幕一区| 国产欧美一区二区精品婷婷| 国产精品一级二级三级| 欧美国产日本韩| 99re视频精品| 亚洲一区二区三区精品在线| 欧美亚洲高清一区二区三区不卡| 亚洲人精品一区| 色综合 综合色| 亚洲亚洲精品在线观看| 欧美日韩亚洲综合一区| 天天操天天综合网| 日韩精品一区二区三区中文精品| 奇米888四色在线精品| 337p粉嫩大胆噜噜噜噜噜91av| 国产在线日韩欧美| 国产午夜精品一区二区三区四区 | 粉嫩13p一区二区三区| 国产精品三级久久久久三级| 91丨国产丨九色丨pron| 亚洲va国产va欧美va观看| 欧美一区二区三区婷婷月色| 狠狠色丁香九九婷婷综合五月| 国产亚洲一二三区| 91色porny在线视频| 亚洲午夜电影网| 久久亚洲精品小早川怜子| 成人动漫在线一区| 日精品一区二区| 国产欧美一区二区三区在线老狼| 色婷婷久久99综合精品jk白丝| 日韩精品成人一区二区三区 | 欧美猛男超大videosgay| 日韩av一区二| 国产精品欧美综合在线| 欧美日韩在线三区| 国产一区二区三区不卡在线观看| 亚洲免费观看高清在线观看| 日韩欧美一级在线播放| 不卡av电影在线播放| 日韩高清一区二区| 国产精品热久久久久夜色精品三区| 精品视频免费看| 成人蜜臀av电影| 精品中文av资源站在线观看| 亚洲欧美区自拍先锋| 欧美sm极限捆绑bd| 色婷婷久久久久swag精品 | 色婷婷综合久久久| 国产一区二区三区四区五区入口 | 亚洲综合一区在线| 久久综合成人精品亚洲另类欧美 | 一本色道亚洲精品aⅴ| 国内精品久久久久影院色| 亚洲综合免费观看高清完整版| 久久麻豆一区二区| 欧美一级生活片| 在线观看亚洲专区| jiyouzz国产精品久久| 狠狠色丁香婷综合久久| 日韩成人av影视| 亚洲电影欧美电影有声小说| 国产精品不卡在线| 国产欧美综合在线| 精品国产乱码久久久久久免费| 欧美日韩aaa| 色噜噜狠狠成人中文综合| 成人午夜免费av| 国产99久久久国产精品免费看| 极品少妇一区二区三区精品视频| 日韩中文字幕区一区有砖一区 | 亚洲猫色日本管| 中文字幕电影一区| 国产午夜精品一区二区三区视频 | 亚洲一级在线观看| 亚洲精品综合在线| 亚洲蜜臀av乱码久久精品蜜桃| 国产精品女同互慰在线看| 国产午夜精品一区二区| 久久久久88色偷偷免费| 国产亚洲成av人在线观看导航| 久久精品一区四区| 久久综合色婷婷| 久久久精品蜜桃| 欧美激情一区不卡| 国产精品久久久久久久久图文区 | 久久久久久免费网| 久久久www成人免费毛片麻豆| 精品国产精品网麻豆系列| 欧美电视剧免费全集观看| 精品国产123| 久久精品人人做| 日本一二三不卡| 国产精品久久久久久久久果冻传媒| 国产精品毛片久久久久久| 亚洲人精品午夜| 午夜国产精品一区| 精品亚洲成av人在线观看| 大陆成人av片| 欧美在线视频全部完| 777久久久精品| 久久久久综合网| 一区二区三区四区在线| 香蕉久久一区二区不卡无毒影院| 日韩影院免费视频| 狠狠色狠狠色综合| 一本大道av伊人久久综合| 8v天堂国产在线一区二区| 亚洲精品一区在线观看| 国产精品美女一区二区三区| 一区二区三区日韩欧美| 日韩电影在线免费看| 高清国产一区二区| 色狠狠色狠狠综合| 精品日韩一区二区三区免费视频| 国产日韩欧美制服另类| 亚洲精品v日韩精品| 蜜桃av一区二区| av电影天堂一区二区在线观看| 欧美日韩一卡二卡| 久久久99精品久久| 亚洲精品第1页| 国产精品一线二线三线| 欧美这里有精品| 国产调教视频一区| 天天做天天摸天天爽国产一区| 国产 欧美在线| 日韩一区二区三区视频在线 | 国产欧美日本一区二区三区| 亚洲国产视频网站| 国产99久久久精品| 日韩午夜电影av| 亚洲激情在线播放| 国产91精品入口| 欧美一区2区视频在线观看| 综合激情网...| 极品尤物av久久免费看| 欧美久久婷婷综合色| 国产精品第一页第二页第三页| 青娱乐精品视频| 欧美视频在线播放| 日韩美女视频一区二区 | 亚洲国产成人自拍| 日本大胆欧美人术艺术动态| 91理论电影在线观看| 久久精品亚洲麻豆av一区二区 | 日韩精品一区二区三区视频| 亚洲精品亚洲人成人网| 国产成人av电影免费在线观看| 欧美一区二区三区在线| 亚洲二区在线观看| 91福利区一区二区三区| 中文字幕一区二区三区在线观看 | 蜜桃av噜噜一区| 7777精品伊人久久久大香线蕉超级流畅 | 中文字幕中文字幕在线一区| 国产一区二区免费视频| 日韩精品一区二区三区视频在线观看| 亚洲一二三区视频在线观看| 日本精品视频一区二区三区| 综合自拍亚洲综合图不卡区| 91在线播放网址| 亚洲欧美另类在线| 91成人网在线| 亚洲影视在线播放| 欧美日韩在线播放三区| 午夜精品aaa|