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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? disassemble.c

?? T-Kernel Shell Sample
?? C
字號:
/*""FILE COMMENT""**************************************************************   System Name : RENESAS uT-Engine*   File Name   : disassemble.c *   Version     : 1.01.00*   Contents    : Disassemble memory *   Model       : SH7145 micro T-Engine*   CPU         : SH7145*   Compiler    : GNU*   OS          : T-Kernel**   note        : The Software is being delivered to you "AS IS" *               : and Renesas,whether explicitly or implicitly makes  *               : no warranty as to its Use or performance. *               : RENESAS AND ITS SUPPLIER DO NOT AND CANNOT WARRANT *               : THE PERFORMANCE OR RESULTS YOU MAY OBTAIN  BY USING *               : THE SOFTWARE. AS TO ANY MATTER INCLUDING WITHOUT *               : LIMITATION NONINFRINGEMENT OF THIRD PARTY RIGHTS,*               : MERCHANTABILITY, INTEGRATION, SATISFACTORY QUALITY, *               : OR FITNESS FOR ANY PARTICULAR PURPOSE.**   Copyright (c) 2004-2006 RENESAS TECHNOLOGY CORP. All Rights Reserved.*   AND RENESAS SOLUTIONS CORP. All Rights Reserved.**   history     : 2004.12.21 ver1.00.00*               : 2006.02.01 ver1.01.00*""FILE COMMENT END""*********************************************************/#ifdef _MIC_SH7145_#include <tk/tkernel.h>#include "shell.h"#include "shelldisp.h"#define ADDROFFSET	0x10extern int argcnt;extern char *cmdargs[];extern W errcode;extern char strstrstr[];void disasmword();typedef struct mnemonictbldata {	unsigned short data;	char           *inst; } MnemonicTable;const MnemonicTable noArgsMnemonicTbl[8] = {	{ 0x0009,"NOP "},	{ 0x000B,"RTS "},	{ 0x002B,"RTE "},	{ 0x0018,"SETT"},	{ 0x001B,"SLEEP "},	{ 0x0008,"CLRT"},	{ 0x0028,"CLRMAC"},	{ 0x0019,"DIV0U "}};const MnemonicTable mnemonicTbl0[9] = {      /* 1234567890123456789 */	 { 4, "MOV.B   R%d,@(R0,R%d)"},	 { 5, "MOV.W   R%d,@(R0,R%d)"},	 { 6, "MOV.L   R%d,@(R0,R%d)"},	 { 7, "MUL.L   R%d,R%d"},      	 { 9, "MOVT    R%d"},          	{ 12, "MOV.B   @(R0,R%d),R%d"},	{ 13, "MOV.W   @(R0,R%d),R%d"},	{ 14, "MOV.L   @(R0,R%d),R%d"},	{ 15, "MAC.L   @R%d+,@R%d+"},  };const char *mnemonicTbl0_STC[3] = {  /* 1234567890123456789 */	"STC     SR,R%d",	"STC     GBR,R%d",	"STC     VBR,R%d"};const char *mnemonicTbl0_STS[3] = {  /* 1234567890123456789 */	"STS     MACH,R%d",	"STS     MACL,R%d",	"STS     PR,R%d"};const char *mnemonicTbl0_BRA[2] = {  /* 1234567890123456789 */	"BSRF    R%d",	"BRAF    R%d"};const char *mnemonicTbl2[16] = {  /* 1234567890123456789 */	"MOV.B   R%d,@R%d",	"MOV.W   R%d,@R%d",	"MOV.L   R%d,@R%d",	0,	"MOV.B   R%d,@-R%d",	"MOV.W   R%d,@-R%d",	"MOV.L   R%d,@-R%d",	"DIV0S   R%d,R%d",	"TST     R%d,R%d",	"AND     R%d,R%d",	"XOR     R%d,R%d",	"OR      R%d,R%d",	"CMP/STR R%d,R%d",	"XTRCT   R%d,R%d",	"MULU.W  R%d,R%d",	"MULS.W  R%d,R%d",};const char *mnemonicTbl3[16] = {	"CMP/EQ  R%d,R%d",	0,	"CMP/HS  R%d,R%d",	"CMP/GE  R%d,R%d",	"DIV1    R%d,R%d",	"DMULU.L R%d,R%d",	"CMP/HI  R%d,R%d",	"CMP/GT  R%d,R%d",	"SUB     R%d,R%d",	0,	"SUBC    R%d,R%d",	"SUBV    R%d,R%d",	"ADD     R%d,R%d",	"DMULS.L R%d,R%d",	"ADDC    R%d,R%d",	"ADDV    R%d,R%d",};const char *mnemonicTbl4[] = {	/*  0 */ "SHLL    R%d",       "DT      R%d",       "SHAL    R%d",	/*  1 */ "SHLR    R%d",       "CMP/PZ  R%d",       "SHAR    R%d",	/*  2 */ "STS.L   MACH,@-R%d","STS.L   MACL,@-R%d","STS.L   PR,@-R%d",	/*  3 */ "STC.L   SR,@-R%d",  "STC.L   GBR,@-R%d", "STC.L   VBR,@-R%d",	/*  4 */ "ROTL    R%d",       "ROTCL   R%d",	/*  5 */ "ROTR    R%d",       "CMP/PL  R%d",       "ROTCR   R%d",	/*  6 */ "LDS.L   @R%d+,MACH","LDS.L   @R%d+,MACL","LDS.L   @R%d+,PR",	/*  7 */ "LDC.L   @R%d+,SR",  "LDC.L   @R%d+,GBR", "LDC.L   @R%d+,VBR",	/*  8 */ "SHLL2   R%d",       "SHLL8   R%d",       "SHLL16  R%d",	/*  9 */ "SHLR2   R%d",       "SHLR8   R%d",       "SHLR16  R%d",	/* 10 */ "LDS     R%d,MACH",  "LDS     R%d,MACL",  "LDS     R%d,PR",	/* 11 */ "JSR     @R%d",      "TAS.B   @R%d",      "JMP     @R%d",	/* 14 */ "LDC     R%d,SR",    "LDC     R%d,GBR",   "LDC     R%d,VBR",	/* 15 */ "MAC.W   @R%d+,@R%d+"};int Tbl4offset[] = { 0,3,6,9,12,14,17,20,23,26,29,32,0,0,35,38 };const char *mnemonicTbl6[16] = {  /* 1234567890123456789 */	"MOV.B   @R%d,R%d",	"MOV.W   @R%d,R%d",	"MOV.L   @R%d,R%d",	"MOV     R%d,R%d",	"MOV.B   @R%d+,R%d",	"MOV.W   @R%d+,R%d",	"MOV.L   @R%d+,R%d",	"NOT     R%d,R%d",	"SWAP.B  R%d,R%d",	"SWAP.W  R%d,R%d",	"NEGC    R%d,R%d",	"NEG     R%d,R%d",	"EXTU.B  R%d,R%d",	"EXTU.W  R%d,R%d",	"EXTS.B  R%d,R%d",	"EXTS.W  R%d,R%d",};const MnemonicTable mnemonicTbl8[16] = {     /* 1234567890123456789 */	 { 0,"MOV.B   R0,@(H'%02X:4,R%d)"},	 { 2,"MOV.W   R0,@(H'%02X:4,R%d)"},	 { 0xFFFF,0},	 { 0xFFFF,0},	 { 0,"MOV.B   @(H'%02X:4,R%d),R0"},	 { 2,"MOV.W   @(H'%02X:4,R%d),R0"},	 { 0xFFFF,0},	 { 0xFFFF,0},	 { 0,"CMP/EQ  #H'%02X,R0"},	 { 0x12,"BT      @H'%X:8"},	 { 0xFFFF,0},	 { 0x12,"BF      @H'%X:8"},	 { 0xFFFF,0},	 { 0x12,"BT/S    @H'%X:8"},	 { 0xFFFF,0},	 { 0x12,"BF/S    @H'%X:8"},};const MnemonicTable mnemonicTbl12[16] = {  /* 1234567890123456789 */	{ 0,"MOV.B   R0,@(H'%04X:8,GBR)"},	{ 2,"MOV.W   R0,@(H'%04X:8,GBR)"},	{ 4,"MOV.L   R0,@(H'%04X:8,GBR)"},	{ 0,"TRAPA   #H'%02X"},	{ 0,"MOV.B   @(H'%04X:8,GBR),R0"},	{ 2,"MOV.W   @(H'%04X:8,GBR),R0"},	{ 4,"MOV.L   @(H'%04X:8,GBR),R0"},	{ 4,"MOVA    @(H'%04X:8,PC),R0"},	{ 0,"TST     #H'%02X,R0"},	{ 0,"AND     #H'%02X,R0"},	{ 0,"XOR     #H'%02X,R0"},	{ 0,"OR      #H'%02X,R0"},	{ 0,"TST.B   #H'%02X,@(R0,GBR)"},	{ 0,"AND.B   #H'%02X,@(R0,GBR)"},	{ 0,"XOR.B   #H'%02X,@(R0,GBR)"},	{ 0,"OR.B    #H'%02X,@(R0,GBR)"},};/*""FUNC COMMENT""******************************************************* * ID          : X.Y.Z * Abstructs   : Disassemble memory *----------------------------------------------------------------------- * Include     :  *----------------------------------------------------------------------- * Definition  : void DISASM_cmd() *----------------------------------------------------------------------- * Function    : Disassemble memory *----------------------------------------------------------------------- * Argument    : None *-----------------------------------------------------------------------  * Return      : None *----------------------------------------------------------------------- * Input       : int argcnt;      input command count  *             : char *cmdargs[]; input command data * Output      : None  *----------------------------------------------------------------------- * Used Func   : disasemline() *             : convertstring() *             : _PutString()  *----------------------------------------------------------------------- * Notice      : None *""FUNC COMMENT END""***************************************************/void DISASM_cmd() {	int      i,ercd,count;	unsigned long startaddr,endaddr;	unsigned short *addr_offset;	if(argcnt) {		startaddr = get_ulnum(cmdargs[1],&ercd);		if(ercd) goto illegalpar_return;		if(startaddr%02) goto illegalpar_return; 		count = ADDROFFSET;		if(argcnt == 2) { 			endaddr = get_ulnum(cmdargs[2],&ercd);			if(ercd) goto illegalpar_return;			if(endaddr < startaddr) goto illegalpar_return;			count = (endaddr - startaddr)>>1; 		}    } else {		errcode = ER_LESSPAR;		return;	}	addr_offset = (unsigned short *)startaddr;	for(i=0;i<count;i++){		printargs[0] = (VP)addr_offset;		printargs[1] = (VP)(*(addr_offset));		convertstring(strstrstr,"%08X %04X ",printargs);		DSP;		disasmword(addr_offset);		DSP_LF;		addr_offset++;	}	return;illegalpar_return:	errcode = ER_ILLEGALPAR;	return;}/*""FUNC COMMENT""******************************************************* * ID          : X.Y.Z * Abstructs   : Disassemble 1word(16bit) data *----------------------------------------------------------------------- * Include     :  *----------------------------------------------------------------------- * Definition  : void disasmword(unsigned short *) *----------------------------------------------------------------------- * Function    : Disassemble 1word(16bit) data *----------------------------------------------------------------------- * Argument    : unsigned short *addr;  *-----------------------------------------------------------------------  * Return      : nmonic code string *----------------------------------------------------------------------- * Input       : None  * Output      : None  *----------------------------------------------------------------------- * Used Func   : convertstring() *             : _PutString()  *----------------------------------------------------------------------- * Notice      : None *""FUNC COMMENT END""***************************************************/void disasmword(unsigned short *addr){	int i,offset;	unsigned short data0,data1,data2,data3;	unsigned short data;	short          pcdisp;	data = *addr;	data0 = (data & 0xf000) >> 12;	data1  = (data & 0x0f00) >> 8;	data2   = (data & 0x00f0) >> 4;	data3   = (data & 0x000f);	if(data0 == 15) goto data_return; /* "DATA" */	switch(data0){		case  0:			/* check no args instruction */			for(i=0;i<8;i++) {				if(data == noArgsMnemonicTbl[i].data) {					_PutString(noArgsMnemonicTbl[i].inst);					return;				}			}			    		/* check args instruction */			switch(data3){				case 0:				case 1:				case 8:					goto data_return;					break;				case 2:					if(data2>2) goto data_return;					printargs[0] = (VP)data1;					convertstring(strstrstr,(unsigned char *)mnemonicTbl0_STC[data2],printargs);					DSP;					break;				case 3:					if((!data2)||(data2==2)) {						printargs[0] = (VP)data1;						if(data2) offset = 1;						else offset = 0;						convertstring(strstrstr,(unsigned char *)mnemonicTbl0_BRA[offset],printargs);						DSP;					} else  goto data_return;					break;				case 10:					if(data2>2) goto data_return;					printargs[0] = (VP)data1;					convertstring(strstrstr,(unsigned char *)mnemonicTbl0_STS[data2],printargs);					DSP;					break;								default:					for(i=0;i<9;i++) {						if( data3 == mnemonicTbl0[i].data) {							if(data3 == 9 ) {								if(data2 != 2) goto data_return;								else printargs[0] = (VP)data1;							} else {								printargs[0] = (VP)data2;								printargs[1] = (VP)data1;							}							convertstring(strstrstr,(unsigned char *)mnemonicTbl0[i].inst,printargs);							DSP;							return;							break;						}					}					goto data_return;					break;			}			break; 		case  1: /* "MOV.L Rm,@(disp,Rn)" data1=n,2=m,3=disp */			printargs[0] = (VP)data2;			printargs[1] = (VP)(data3*4);			printargs[2] = (VP)data1;			convertstring(strstrstr,"MOV.L   R%d,@(H'%02X:4,R%d)",printargs);			DSP;			break;		case  2: /* data1=n,data2=m */			if(data3 == 3) goto data_return;			printargs[0] = (VP)data2;			printargs[1] = (VP)data1;			convertstring(strstrstr,(unsigned char *)mnemonicTbl2[data3],printargs);				DSP;			break;		case  3:			if((data3 == 1)||(data3 == 9)) goto data_return; 			printargs[0] = (VP)data2;			printargs[1] = (VP)data1;			convertstring(strstrstr,(unsigned char *)mnemonicTbl3[data3],printargs);				DSP;			break;		case  4:			switch(data3){				case  4:					if((data2>2)||(data2==1)) goto data_return;					if(data2) offset = Tbl4offset[4] + 1;					else offset = Tbl4offset[4];					break;				case 12:				case 13:					goto data_return; break;				case 15:					printargs[0] = (VP)data2;					printargs[1] = (VP)data1;					convertstring(strstrstr,(unsigned char *)mnemonicTbl4[38],printargs);					DSP;					return;					break;				default:					if(data2>2) goto data_return;					offset = Tbl4offset[data3]+data2;						break;			}			printargs[0] = (VP)data1;			convertstring(strstrstr,(unsigned char *)mnemonicTbl4[offset],printargs);			DSP;			break;		case  5: /* "MOV.L @(disp,Rm),Rn" data1=n,2=m,3=disp */			printargs[0] = (VP)(data3*4);			printargs[1] = (VP)data2;			printargs[2] = (VP)data1;			convertstring(strstrstr,"MOV.L   @(H'%02X:4,R%d),R%d",printargs);			DSP;			break;		case  6:			printargs[0] = (VP)data2;			printargs[1] = (VP)data1;			convertstring(strstrstr,(unsigned char *)mnemonicTbl6[data3],printargs);				DSP;			break;		case  7: /* "ADD  #imm,Rn" data1=n,2,3=imm */		case 14: /* "MOV  #imm,Rn" data1=n,2,3=imm */			if(data0 == 7) printargs[0] = (VP)"ADD";			else printargs[0] = (VP)"MOV";			printargs[1] = (VP)(data&0x00FF);			printargs[2] = (VP)data1;			convertstring(strstrstr,"%s     #H'%02X,R%d",printargs);			DSP;			break;		case  8:			if(mnemonicTbl8[data1].data != 0xFFFF) {				if( data1 >=8 ){					if(data1 == 8 ) {						printargs[0] = (VP)(data&0x00FF);					} else {						pcdisp = (data&0x00FF); 						if(pcdisp & 0x0080) pcdisp -= 0x100;						printargs[0] = (VP)(pcdisp+addr+2);					}				} else {					if(mnemonicTbl8[data1].data) printargs[0] = (VP)(data3*2);					else printargs[0] = (VP)data3;					printargs[1] = (VP)data2;				}				convertstring(strstrstr,(unsigned char *)mnemonicTbl8[data1].inst,printargs);				DSP;				return;			} else goto data_return;			break;		case  9: /* "MOV.W @(disp,PC),Rn" data1=n,2,3=disp */		case 13: /* "MOV.L @(disp,PC),Rn" data1=n,2,3=disp */			if(data0 == 9) {				printargs[0] = (VP)"W";				printargs[1] = (VP)((data&0x00FF)*2);			} else {				printargs[0] = (VP)"L";				printargs[1] = (VP)((data&0x00FF)*4);			}			printargs[2] = (VP)data1;			convertstring(strstrstr,"MOV.%s   @(H'%04X:8,PC),R%d",printargs);			DSP;			break;		case 10: /* "BRA   label" data1,2,3=label */		case 11: /* "BSR   label" data1,2,3=label */			if(data0 == 10) printargs[0] = (VP)"RA";			else printargs[0] = (VP)"SR";			pcdisp = (data&0x0FFF); 			if(pcdisp & 0x0800) pcdisp -= 0x1000;			printargs[1] = (VP)(pcdisp+addr+2);			convertstring(strstrstr,"B%s     @H'%X:12",printargs);			DSP;			break;		case 12:			i = mnemonicTbl12[data1].data;			if(i>0) printargs[0] = (VP)((data&0x00FF)*i);			else printargs[0] = (VP)(data&0x00FF);			convertstring(strstrstr,(unsigned char *)mnemonicTbl12[data1].inst,printargs);				DSP;			break;		case 15:			goto data_return; break;	}	return;data_return:	_PutString("DATA");	return;}#endif // _MIC_SH7145_

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲福利一区二区三区| 国产香蕉久久精品综合网| 欧美一级艳片视频免费观看| 欧美一区二区三区在| 久久婷婷一区二区三区| 亚洲精品视频一区| 久久精品国产精品亚洲红杏| 成人免费高清视频在线观看| 欧美视频在线观看一区二区| 337p粉嫩大胆色噜噜噜噜亚洲 | 美女视频第一区二区三区免费观看网站| 久久精品国产在热久久| av影院午夜一区| 欧美一区二区三区成人| 国产精品视频一二| 午夜激情综合网| av一区二区不卡| 欧美一二区视频| 亚洲乱码中文字幕综合| 国产在线播放一区三区四| 色av一区二区| 国产日韩欧美高清在线| 亚洲v精品v日韩v欧美v专区| 国产69精品久久久久毛片| 91麻豆精品国产自产在线 | 92精品国产成人观看免费| 91精品国产91热久久久做人人 | 91丨九色丨国产丨porny| 欧美α欧美αv大片| 樱桃国产成人精品视频| 国产福利一区在线| 91精品国产黑色紧身裤美女| 亚洲人成电影网站色mp4| 国产一区二区剧情av在线| 欧美色网站导航| 中文字幕一区二区三区在线播放| 蜜臀av国产精品久久久久| 色综合天天做天天爱| 国产亚洲精品资源在线26u| 天天影视色香欲综合网老头| 99精品热视频| 国产欧美日韩激情| 久久99久久99| 这里是久久伊人| 亚洲国产精品久久艾草纯爱| 成人97人人超碰人人99| 国产香蕉久久精品综合网| 久久99精品久久久久婷婷| 91精品国产全国免费观看| 亚洲成人激情自拍| 色av一区二区| 国产91精品在线观看| 884aa四虎影成人精品一区| 亚洲日本护士毛茸茸| 久久国产精品第一页| 欧美在线|欧美| 亚洲一线二线三线久久久| 91色porny在线视频| 亚洲男人电影天堂| 色婷婷综合久久| 日韩不卡在线观看日韩不卡视频| 欧美日韩中文字幕一区二区| 亚洲精品在线电影| xnxx国产精品| 国产成人精品免费| 亚洲色图19p| 欧美日韩一区三区四区| 日韩av在线发布| xvideos.蜜桃一区二区| youjizz国产精品| 亚洲一区免费视频| 日韩你懂的电影在线观看| 国产大陆精品国产| 最新国产成人在线观看| 欧美日韩一区二区三区视频| 91亚洲精品一区二区乱码| 成人av资源网站| 久久久久青草大香线综合精品| 国产91高潮流白浆在线麻豆| 亚洲精品videosex极品| 欧美一区二区三区四区久久| 国产精品一区二区久久精品爱涩 | 国产一区二区精品在线观看| 国产精品二三区| 欧美一区二区三区不卡| 国产99久久精品| 亚洲国产综合在线| 久久美女高清视频| 在线精品国精品国产尤物884a| 美日韩黄色大片| 亚洲欧洲美洲综合色网| 欧美一区二区三区人| 不卡视频一二三| 麻豆91在线播放| 亚洲欧洲av在线| 日韩精品一区二区三区三区免费| 成人av中文字幕| 日本大胆欧美人术艺术动态| 国产女主播视频一区二区| 在线观看亚洲成人| 国产麻豆一精品一av一免费| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲激情图片qvod| 精品国产一区二区三区久久久蜜月| 成人蜜臀av电影| 久久99精品久久久| 一区二区成人在线| 国产三级精品视频| 555夜色666亚洲国产免| 99精品视频在线免费观看| 免费一级片91| 最新久久zyz资源站| 日韩欧美亚洲一区二区| 色婷婷综合激情| 成人免费毛片嘿嘿连载视频| 裸体健美xxxx欧美裸体表演| 一区二区三区在线视频免费| 日本一区二区三区在线不卡| 日韩精品一区二区三区蜜臀| 欧美色图片你懂的| av在线不卡观看免费观看| 激情综合色播五月| 亚洲成人1区2区| 18成人在线视频| 中文久久乱码一区二区| 日韩精品中文字幕一区 | eeuss鲁一区二区三区| 亚洲激情中文1区| 日本精品一级二级| 亚洲成人动漫在线观看| 欧美不卡一区二区| 9191成人精品久久| 91麻豆自制传媒国产之光| 国产成人在线观看| 久久精品国内一区二区三区| 日韩不卡在线观看日韩不卡视频| 一区二区三区四区乱视频| 中文字幕一区二区三中文字幕| 久久精品亚洲麻豆av一区二区 | 成人性生交大片| 国产一区二区三区| 激情综合色播激情啊| 免费观看在线综合| 日韩在线一区二区| 亚洲国产精品一区二区www| 亚洲精品国产视频| 综合电影一区二区三区| 最新热久久免费视频| 日本少妇一区二区| 香蕉久久一区二区不卡无毒影院| 一个色在线综合| 亚洲精品视频免费看| 一区二区三区在线观看视频| 亚洲欧美aⅴ...| 亚洲天堂网中文字| 亚洲精品国产一区二区精华液| 亚洲欧洲综合另类在线| 亚洲日本护士毛茸茸| 亚洲精品菠萝久久久久久久| 一区二区不卡在线播放| 亚洲丶国产丶欧美一区二区三区| 亚洲一区二区三区爽爽爽爽爽| 一区二区高清视频在线观看| 亚洲亚洲精品在线观看| 婷婷中文字幕一区三区| 日韩国产欧美在线观看| 欧美a级理论片| 精品影院一区二区久久久| 久久国产婷婷国产香蕉| 国产一区二区三区最好精华液| 国产一区在线看| 成人综合在线观看| 99精品欧美一区二区三区小说 | 国模一区二区三区白浆| 国产乱子伦一区二区三区国色天香| 国产精品主播直播| 99久久精品免费看国产免费软件| 一本色道久久综合亚洲aⅴ蜜桃| 在线观看免费一区| 91精品免费在线| 久久久夜色精品亚洲| 国产精品夫妻自拍| 亚洲成年人影院| 精品一区二区三区影院在线午夜| 国产乱理伦片在线观看夜一区| 不卡影院免费观看| 欧美色图12p| 精品国产99国产精品| 中文字幕一区二区在线观看| 亚洲成人第一页| 国产盗摄一区二区| 在线精品视频免费观看| 日韩欧美亚洲国产精品字幕久久久 | 国产成都精品91一区二区三| caoporn国产精品| 91精品一区二区三区久久久久久 | 欧美老人xxxx18| 精品国产乱码久久久久久蜜臀 | 久久综合色婷婷| 亚洲欧美电影一区二区|