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

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

?? dpi.cpp

?? RISC processor ARM-7 emulator
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*************************************************************************
    Copyright (C) 2002,2003,2004,2005 Wei Qin
    See file COPYING for more information.

    This program is free software; you can redistribute it and/or modify    
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
*************************************************************************/

#include <cstdio>
#include <armemul.h>
#include "dpi.h"

#ifdef _MODULARIZE_

using namespace emulator;
#define SHIFTER_CARRY emu->shifter_carry
#define ALU_CARRY emu->alu_carry

#else

#define SHIFTER_CARRY shifter_carry
#define ALU_CARRY alu_carry

#endif

static const char *arm_dpinames[] = 
{"and", "eor", "sub", "rsb", "add", "adc", "sbc", "rsc",
 "tst", "teq", "cmp", "cmn", "orr", "mov", "bic", "mvn"};


/*utilities for alu operations*/
static inline UInt32 rotate_right(UInt32 val, UInt32 imm)
{
	return (val >> imm ) | (val << (32 - imm));
}

/*
  Shifter_operand1 and shifter_operand1_s actually was in one before.
  So does shifter_operand2's and shifter_oeprand3's.
  Separating them helps simulation speed a little bit (8.31->8.49Mips)
*/

/*immediate shifter operand*/
static inline UInt32 shifter_operand1(IMPL_FORMALS)
{
	UInt32 imm = inst & 0xff;
	UInt32 shift = (inst>>7) & 0x1e;
	UInt32 result;

	result = rotate_right(imm, shift);
	return result;
}

/*immediate shifter operand*/
static inline UInt32 shifter_operand1_s(IMPL_FORMALS)
{
	UInt32 imm = inst & 0xff;
	UInt32 shift = (inst>>7) & 0x1e;
	UInt32 result;

	result = rotate_right(imm, shift);

	if (!shift)
		SHIFTER_CARRY = C_FLAG;
	else
		SHIFTER_CARRY = BIT31(result);
	return result;
}

/*shift imediate shifter operand*/
static inline UInt32 shifter_operand2(IMPL_FORMALS)
{
	UInt32 shift_imm = (inst>>7) & 0x01f, val = RM, result;
	UInt8 type = (inst>>5) & 0x03;

	switch (type) {
		case 0: /*LSL*/	
			result = val << shift_imm;
			break;
		case 1: /*LSR*/
			if (shift_imm) {
				result = val >> shift_imm;
			} else {
				result = 0;
			}
			break;
		case 2: /*ASR*/
			if (shift_imm) {
				result = (SInt32)val>>shift_imm;
			}
			else {
				result = BIT31(val)?~0:BIT31(val);
			}
			break;
		default: /*ROR*/
			if (shift_imm) {
				result = rotate_right(val, shift_imm);
			}
			else { /*RRX*/
				result = (val>>1) |	(C_FLAG<<31);
			}
			break;
			
	}
	return result;
}

/*shift imediate shifter operand*/
static inline UInt32 shifter_operand2_s(IMPL_FORMALS)
{
	UInt32 shift_imm = (inst>>7) & 0x01f, val = RM, result;
	UInt8 type = (inst>>5) & 0x03;

	switch (type) {
		case 0: /*LSL*/	
			result = val << shift_imm;
			SHIFTER_CARRY = shift_imm?BITn(val,32-shift_imm):C_FLAG;
			break;
		case 1: /*LSR*/
			if (shift_imm) {
				result = val >> shift_imm;
				SHIFTER_CARRY = BITn(val, shift_imm-1);
			} else {
				result = 0;
				SHIFTER_CARRY = BIT31(val);
			}
			break;
		case 2: /*ASR*/
			if (shift_imm) {
				result = (SInt32)val>>shift_imm;
				SHIFTER_CARRY = BITn(val,shift_imm-1);
			}
			else {
				result = BIT31(val)?~0:BIT31(val);
				SHIFTER_CARRY = BIT31(val);
			}
			break;
		default: /*ROR*/
			if (shift_imm) {
				result = rotate_right(val, shift_imm);
				SHIFTER_CARRY = BITn(val, shift_imm-1);
			}
			else { /*RRX*/
				result = (val>>1) |	(C_FLAG<<31);
				SHIFTER_CARRY = BIT0(val);
			}
			break;
	}
	return result;
}

/*shift register shifter operand*/
static inline UInt32 shifter_operand3(IMPL_FORMALS)
{
	UInt32 shift_imm = RS & 0xff, val = RM, result;
	UInt8 type = (inst>>5) & 0x03;

	switch (type) {
		case 0: /*LSL*/	
			if (shift_imm==0) {
				result = val;
			} else if (shift_imm<32) {
				result = val << shift_imm;
			} else if (shift_imm==32) {
				result = 0;
			} else {
				result = 0;
			}
			break;
		case 1: /*LSR*/
			if (shift_imm==0) {
				result = val;
			} else if (shift_imm<32) {
				result = val >> shift_imm;
			} else if (shift_imm==32) {
				result = 0;
			} else {
				result = 0;
			}
			break;
		case 2: /*ASR*/
			if (shift_imm==0) {
				result = val;
			} else if (shift_imm<32) {
				result = (SInt32)val >> shift_imm;
			} else if (BIT31(val)) {
				result = ~0;
			} else {
				result = 0;
			}
			break;
		default: /*ROR*/
			if (shift_imm==0) {
				result = val;
			}
			else if ((shift_imm&0x1f)==0) {
				result = val;
			}
			else {
				result = rotate_right(val, shift_imm&0x1f);
			}
			break;
	}
	return result;
}

/*shift register shifter operand*/
static inline UInt32 shifter_operand3_s(IMPL_FORMALS)
{
	UInt32 shift_imm = RS & 0xff, val = RM, result;
	UInt8 type = (inst>>5) & 0x03;

	switch (type) {
		case 0: /*LSL*/	
			if (shift_imm==0) {
				result = val;
				SHIFTER_CARRY = C_FLAG;
			} else if (shift_imm<32) {
				result = val << shift_imm;
				SHIFTER_CARRY = BITn(val,32-shift_imm);
			} else if (shift_imm==32) {
				result = 0;
				SHIFTER_CARRY = BIT0(val);
			} else {
				result = 0;
				SHIFTER_CARRY = 0;
			}
			break;
		case 1: /*LSR*/
			if (shift_imm==0) {
				result = val;
				SHIFTER_CARRY = C_FLAG;
			} else if (shift_imm<32) {
				result = val >> shift_imm;
				SHIFTER_CARRY = BITn(val,shift_imm-1);
			} else if (shift_imm==32) {
				result = 0;
				SHIFTER_CARRY = BIT31(val);
			} else {
				result = 0;
				SHIFTER_CARRY = 0;
			}
			break;
		case 2: /*ASR*/
			if (shift_imm==0) {
				result = val;
				SHIFTER_CARRY = C_FLAG;
			} else if (shift_imm<32) {
				result = (SInt32)val >> shift_imm;
				SHIFTER_CARRY = BITn(val,shift_imm-1);
			} else if (BIT31(val)) {
				result = ~0;
				SHIFTER_CARRY = BIT31(val);
			} else {
				result = 0;
				SHIFTER_CARRY = BIT31(val);
			}
			break;
		default: /*ROR*/
			if (shift_imm==0) {
				result = val;
				SHIFTER_CARRY = C_FLAG;
			}
			else if ((shift_imm&0x1f)==0) {
				result = val;
				SHIFTER_CARRY = BIT31(val);
			}
			else {
				result = rotate_right(val, shift_imm&0x1f);
				SHIFTER_CARRY = BITn(val, (shift_imm&0x1f)-1);
			}
			break;
	}
	return result;
}

/*data processing instructions*/

/*move*/

#ifdef _MODULARIZE_
#define SET_MOVE_FLAGS(val) set_move_flags(emu, val)
static inline void set_move_flags(armulator *emu, UInt32 val)
#else
#define SET_MOVE_FLAGS(val) set_move_flags(val)
static inline void set_move_flags(UInt32 val)
#endif
{
#if 0
	ASGN_N(BIT31(val));
	ASGN_Z(val==0);
	ASGN_C(SHIFTER_CARRY);
#endif
	ASGN_CONDS(ASM_CONDS(BIT31(val), val==0, SHIFTER_CARRY, V_FLAG));
}

void impl_mov_1(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, shifter_operand1(IMPL_ARGS));

	EMULATOR_STUB(mov_1,inst);
}

void impl_mov_1s(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, shifter_operand1_s(IMPL_ARGS));
	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else 
		SET_MOVE_FLAGS(RD);

	EMULATOR_STUB(mov_1s,inst);
}

void impl_mov_2(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, shifter_operand2(IMPL_ARGS));

	EMULATOR_STUB(mov_2,inst);
}

void impl_mov_2s(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, shifter_operand2_s(IMPL_ARGS));
	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else 
		SET_MOVE_FLAGS(RD);

	EMULATOR_STUB(mov_2s,inst);
}

void impl_mov_3(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, shifter_operand3(IMPL_ARGS));

	EMULATOR_STUB(mov_3,inst);
}

void impl_mov_3s(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, shifter_operand3_s(IMPL_ARGS));
	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else 
		SET_MOVE_FLAGS(RD);

	EMULATOR_STUB(mov_3s,inst);
}

/*MVN*/
void impl_mvn_1(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, ~shifter_operand1(IMPL_ARGS));

	EMULATOR_STUB(mvn_1,inst);
}

void impl_mvn_1s(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, ~shifter_operand1_s(IMPL_ARGS));
	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else 
		SET_MOVE_FLAGS(RD);

	EMULATOR_STUB(mvn_1s,inst);
}

void impl_mvn_2(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, ~shifter_operand2(IMPL_ARGS));

	EMULATOR_STUB(mvn_2,inst);
}

void impl_mvn_2s(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, ~shifter_operand2_s(IMPL_ARGS));
	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else 
		SET_MOVE_FLAGS(RD);

	EMULATOR_STUB(mvn_2s,inst);
}

void impl_mvn_3(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, ~shifter_operand3(IMPL_ARGS));

	EMULATOR_STUB(mvn_3,inst);
}

void impl_mvn_3s(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, ~shifter_operand3_s(IMPL_ARGS));
	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else
		SET_MOVE_FLAGS(RD);

	EMULATOR_STUB(mvn_3s,inst);
}

/*ADD*/

#ifdef _MODULARIZE_
#define SET_ADD_FLAGS(_res) set_add_flags(emu, _res)
static inline void set_add_flags(armulator *emu, UInt64 result)
#else
#define SET_ADD_FLAGS(_res) set_add_flags(_res)
static inline void set_add_flags(UInt64 result)
#endif
{

	UInt32 l_res = result, u_res = result>>32;
#if 0
	ASGN_N(BIT31(l_res));
	ASGN_Z(l_res==0);
	ASGN_C(ALU_CARRY);
	ASGN_V(BIT0(u_res)!=BIT31(l_res));
#endif
	ASGN_CONDS(ASM_CONDS(BIT31(l_res), l_res==0, ALU_CARRY,
		BIT0(u_res)!=BIT31(l_res)));
}

#ifdef _MODULARIZE_
#define IMPL_ADD64(_src_a, _src_b) impl_add64(emu, _src_a, _src_b)
static inline UInt64 impl_add64(armulator *emu, SInt32 a, SInt32 b)
#else
#define IMPL_ADD64(_src_a, _src_b) impl_add64(_src_a, _src_b)
static inline UInt64 impl_add64(SInt32 a, SInt32 b)
#endif
{
	UInt64 lhs = a, rhs = b;
	UInt64 result = lhs+rhs;

	ALU_CARRY = ((UInt32)a>>31) ^ ((UInt32)b>>31);
	ALU_CARRY ^= (((UInt32)(result>>32))&0x1);

	return result;
}

#ifdef _MODULARIZE_
#define IMPL_ADD64_W_CARRY(_src_a, _src_b, _src_c) \
	impl_add64_w_carry(emu, _src_a, _src_b, _src_c);
static inline UInt64 impl_add64_w_carry(armulator *emu, 
	SInt32 a, SInt32 b, UInt32 c)
#else
#define IMPL_ADD64_W_CARRY(_src_a, _src_b, _src_c) \
	impl_add64_w_carry(_src_a, _src_b, _src_c);
static inline UInt64 impl_add64_w_carry(
	SInt32 a, SInt32 b, UInt32 c)
#endif
{
	UInt64 lhs = a, rhs = b;
	UInt64 result = lhs+rhs+c;

	ALU_CARRY = ((UInt32)a>>31) ^ ((UInt32)b>>31);
	ALU_CARRY ^= (((UInt32)(result>>32))&0x1);

	return result;
}

void impl_add_1(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, RN + shifter_operand1(IMPL_ARGS));

	EMULATOR_STUB(add_1,inst);
}

void impl_add_1s(IMPL_FORMALS)
{
	UInt64 result;
	result = IMPL_ADD64(RN, shifter_operand1(IMPL_ARGS));
	WRITE_REG(RDFLD, (UInt32)result);

	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else 
		SET_ADD_FLAGS(result);

	EMULATOR_STUB(add_1s,inst);
}

void impl_add_2(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, RN + shifter_operand2(IMPL_ARGS));

	EMULATOR_STUB(add_2,inst);
}

void impl_add_2s(IMPL_FORMALS)
{
	UInt64 result;
	result = IMPL_ADD64(RN, shifter_operand2(IMPL_ARGS));
	WRITE_REG(RDFLD, (UInt32)result);

	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else 
		SET_ADD_FLAGS(result);

	EMULATOR_STUB(add_2s,inst);
}

void impl_add_3(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, RN + shifter_operand3(IMPL_ARGS));

	EMULATOR_STUB(add_3,inst);
}

void impl_add_3s(IMPL_FORMALS)
{
	UInt64 result;
	result = IMPL_ADD64(RN, shifter_operand3(IMPL_ARGS));
	WRITE_REG(RDFLD, (UInt32)result);

	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else
		SET_ADD_FLAGS(result);

	EMULATOR_STUB(add_3s,inst);
}

/*ADC*/
void impl_adc_1(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, RN + shifter_operand1(IMPL_ARGS) + C_FLAG);

	EMULATOR_STUB(adc_1,inst);
}

void impl_adc_1s(IMPL_FORMALS)
{
	UInt64 result;
	result = IMPL_ADD64_W_CARRY(RN, shifter_operand1(IMPL_ARGS), C_FLAG);
	WRITE_REG(RDFLD, (UInt32)result);

	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else 
		SET_ADD_FLAGS(result);

	EMULATOR_STUB(adc_1s,inst);
}

void impl_adc_2(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, RN + shifter_operand2(IMPL_ARGS) + C_FLAG);

	EMULATOR_STUB(adc_2,inst);
}

void impl_adc_2s(IMPL_FORMALS)
{
	UInt64 result;
	result = IMPL_ADD64_W_CARRY(RN, shifter_operand2(IMPL_ARGS), C_FLAG);
	WRITE_REG(RDFLD, (UInt32)result);

	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else 
		SET_ADD_FLAGS(result);

	EMULATOR_STUB(adc_2s,inst);
}

void impl_adc_3(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, RN + shifter_operand3(IMPL_ARGS) + C_FLAG);

	EMULATOR_STUB(adc_3,inst);
}

void impl_adc_3s(IMPL_FORMALS)
{
	UInt64 result;
	result = IMPL_ADD64_W_CARRY(RN, shifter_operand3(IMPL_ARGS), C_FLAG);
	WRITE_REG(RDFLD, (UInt32)result);

	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else
		SET_ADD_FLAGS(result);

	EMULATOR_STUB(adc_3s,inst);
}

/*SUB*/
#ifdef _MODULARIZE_
#define SET_SUB_FLAGS(_res) set_sub_flags(emu, _res)
static inline void set_sub_flags(armulator *emu, UInt64 result)
#else
#define SET_SUB_FLAGS(_res) set_sub_flags(_res)
static inline void set_sub_flags(UInt64 result)
#endif
{
	UInt32 l_res = result, u_res = result>>32;
#if 0
	ASGN_N(BIT31(l_res));
	ASGN_Z(l_res==0);
	ASGN_C(!ALU_CARRY);
	ASGN_V(BIT0(u_res)!=BIT31(l_res));
#endif
	ASGN_CONDS(ASM_CONDS(BIT31(l_res), l_res==0, !ALU_CARRY,
		BIT0(u_res)!=BIT31(l_res)));
}

#ifdef _MODULARIZE_
#define IMPL_SUB64(_src_a, _src_b) impl_sub64(emu, _src_a, _src_b)
static inline UInt64 impl_sub64(armulator *emu, SInt32 a, SInt32 b)
#else
#define IMPL_SUB64(_src_a, _src_b) impl_sub64(_src_a, _src_b)
static inline UInt64 impl_sub64(SInt32 a, SInt32 b)
#endif
{
	UInt64 lhs = a, rhs = b;
	UInt64 result = lhs - rhs;

	ALU_CARRY = ((UInt32)a>>31) ^ ((UInt32)b>>31);
	ALU_CARRY ^= (((UInt32)(result>>32))&0x1);

	return result;
}

#ifdef _MODULARIZE_
#define IMPL_SUB64_W_CARRY(_src_a, _src_b, _src_c) \
	impl_sub64_w_carry(emu, _src_a, _src_b, _src_c)
static inline UInt64 impl_sub64_w_carry(armulator *emu, SInt32 a, SInt32 b, UInt32 c)
#else
#define IMPL_SUB64_W_CARRY(_src_a, _src_b, _src_c) \
	impl_sub64_w_carry(_src_a, _src_b, _src_c)
static inline UInt64 impl_sub64_w_carry(SInt32 a, SInt32 b, UInt32 c)
#endif
{
	UInt64 lhs = a, rhs = b;
	UInt64 result = lhs - rhs - c;

	ALU_CARRY = ((UInt32)a>>31) ^ ((UInt32)b>>31);
	ALU_CARRY ^= (((UInt32)(result>>32))&0x1);

	return result;
}

void impl_sub_1(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, RN - shifter_operand1(IMPL_ARGS));

	EMULATOR_STUB(sub_1,inst);
}

void impl_sub_1s(IMPL_FORMALS)
{
	UInt64 result;
	result = IMPL_SUB64(RN, shifter_operand1(IMPL_ARGS));
	WRITE_REG(RDFLD, (UInt32)result);

	if (RDFLD==15)
		WRITE_CPSR(SPSR);
	else 
		SET_SUB_FLAGS(result);

	EMULATOR_STUB(sub_1s,inst);
}

void impl_sub_2(IMPL_FORMALS)
{
	WRITE_REG(RDFLD, RN - shifter_operand2(IMPL_ARGS));

	EMULATOR_STUB(sub_2,inst);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产美女av一区二区三区| 91在线视频免费观看| 麻豆精品国产传媒mv男同| 日本欧美肥老太交大片| 国产91丝袜在线播放九色| 色八戒一区二区三区| 日韩你懂的在线播放| 日韩经典中文字幕一区| 精品一区二区三区香蕉蜜桃 | 国产精一品亚洲二区在线视频| 丁香六月综合激情| 高清不卡在线观看| 欧美日韩大陆一区二区| 亚洲国产精品精华液ab| 蜜臀av一级做a爰片久久| 色噜噜久久综合| 久久久精品国产99久久精品芒果 | 精品国产网站在线观看| 国产精品天美传媒| 青青草国产成人av片免费| 91网站黄www| 久久奇米777| 男男成人高潮片免费网站| 色素色在线综合| 国产亚洲人成网站| 久久99最新地址| 欧美福利一区二区| 一区二区三区不卡视频| 成人激情小说乱人伦| 久久久国产午夜精品| 亚洲一区二区在线观看视频| 丁香天五香天堂综合| 久久综合狠狠综合| 婷婷综合五月天| 欧美中文字幕久久| ...中文天堂在线一区| 国产成人av网站| 欧美日本国产视频| 一区二区成人在线观看| 99久久精品费精品国产一区二区| 久久丝袜美腿综合| 久久福利视频一区二区| 欧美一级日韩不卡播放免费| 亚洲午夜成aⅴ人片| 欧美制服丝袜第一页| 亚洲九九爱视频| 在线影院国内精品| 有码一区二区三区| 欧美色成人综合| 亚洲成人动漫精品| 欧美色爱综合网| 丝袜亚洲另类丝袜在线| 91精品国产综合久久福利软件 | 色综合天天在线| 日韩伦理av电影| 91网站最新网址| 亚洲国产精品影院| 欧美男生操女生| 日本伊人色综合网| 精品久久久久久久人人人人传媒| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 粉嫩av一区二区三区在线播放| 色综合天天综合网天天狠天天| 成人免费在线视频观看| 色综合天天综合网国产成人综合天 | 日韩精品一区二区三区视频播放| 午夜精品久久一牛影视| 欧美久久婷婷综合色| 一区二区三区在线影院| 欧美日韩电影在线播放| 美国一区二区三区在线播放| 2020日本不卡一区二区视频| 国产成人精品免费看| 一区二区三区国产精品| 3751色影院一区二区三区| 久久爱www久久做| 中文字幕日本乱码精品影院| 色综合久久88色综合天天6| 午夜精品久久久久久久久久久| 欧美一卡二卡在线| 成人性生交大片免费看中文| 1024亚洲合集| 欧美哺乳videos| 91香蕉视频污| 激情成人午夜视频| 亚洲少妇中出一区| 欧美v国产在线一区二区三区| 粉嫩13p一区二区三区| 亚洲综合色丁香婷婷六月图片| 欧美一区二区三区免费大片| 懂色一区二区三区免费观看| 亚洲综合在线电影| 精品理论电影在线| 91豆麻精品91久久久久久| 韩国三级在线一区| 一区二区三区日韩精品| 精品福利av导航| 国产91露脸合集magnet| 亚洲va欧美va人人爽午夜| 国产欧美精品一区| 欧美精品丝袜久久久中文字幕| 国产91富婆露脸刺激对白| 亚洲妇女屁股眼交7| 欧美亚洲综合在线| 91免费看片在线观看| 成人av免费观看| 丰满放荡岳乱妇91ww| 国产一区在线看| 国产一区二区三区在线观看精品| 日韩国产成人精品| 日韩在线一区二区| 日本不卡不码高清免费观看| 亚洲18色成人| 天堂成人国产精品一区| 日韩电影一区二区三区四区| 五月天欧美精品| 人妖欧美一区二区| 蜜臀久久99精品久久久久宅男| 日韩成人一级片| 免费成人在线网站| 久久福利视频一区二区| 国产剧情在线观看一区二区| 国产一区二区0| 国产宾馆实践打屁股91| 成人性色生活片免费看爆迷你毛片| 懂色av一区二区夜夜嗨| 一本大道综合伊人精品热热| 欧美无人高清视频在线观看| 欧美二区在线观看| 精品久久久久久综合日本欧美| 久久久一区二区三区| 国产精品久久久久久久久久久免费看 | 国产欧美在线观看一区| 国产午夜一区二区三区| 久久亚洲综合色| 国产精品美女久久久久aⅴ国产馆| 国产精品视频九色porn| 亚洲精品视频自拍| 日本欧美在线看| 国产美女在线精品| 一本到不卡免费一区二区| 9191国产精品| 国产视频一区在线观看| 亚洲精品videosex极品| 美女视频黄免费的久久| 粉嫩高潮美女一区二区三区| 欧美在线免费播放| 久久综合色之久久综合| 中文字幕在线一区二区三区| 午夜精彩视频在线观看不卡| 国产成人精品一区二区三区四区 | 国产日产欧美一区二区三区| 亚洲三级久久久| 欧美aaaaa成人免费观看视频| 国产在线麻豆精品观看| 91色在线porny| 欧美第一区第二区| 亚洲女同ⅹxx女同tv| 九九视频精品免费| 在线亚洲欧美专区二区| 久久综合一区二区| 亚洲一级片在线观看| 国产激情视频一区二区三区欧美| 欧美中文字幕一区二区三区 | 顶级嫩模精品视频在线看| 777亚洲妇女| 日韩毛片精品高清免费| 国产揄拍国内精品对白| 欧美色图在线观看| 国产精品久久福利| 久久99热狠狠色一区二区| 欧美午夜免费电影| 中文字幕一区二区三区蜜月| 精品一区二区三区在线观看| 精品视频一区二区三区免费| 亚洲色图一区二区三区| 国产激情视频一区二区三区欧美| 69p69国产精品| 亚洲一区二区精品久久av| 成人aa视频在线观看| 2023国产精品视频| 久久电影网站中文字幕| 欧美乱妇20p| 午夜欧美2019年伦理| 色88888久久久久久影院野外| 国产精品人成在线观看免费| 国产真实乱对白精彩久久| 日韩三级在线观看| 日韩av二区在线播放| 欧美视频日韩视频在线观看| 亚洲日本电影在线| 99久精品国产| 日韩一区有码在线| 97超碰欧美中文字幕| 中文字幕日韩av资源站| www.日韩av| 中文字幕一区二区视频| 91老师国产黑色丝袜在线| 亚洲欧美国产高清| 色婷婷精品大在线视频|