久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

java虛擬機詳述-第三章(一)

瀏覽:62日期:2024-06-18 08:27:17
內容: 3.1 The class File FormatCompiled code to be executed by the Java virtual machine is represented using a hardware- and operating system-independent binary format, typically (but not necessarily) stored in a file, known as the class file format. The class file format precisely defines the representation of a class or interface, including details such as byte ordering that might be taken for granted in a platform-specific object file format. Chapter 4, 'The class File Format', covers the class file format in detail.--------------------------------------------------------------------------------3.2 Data TypesLike the Java programming language, the Java virtual machine operates on two kinds of types: primitive types and reference types. There are, correspondingly, two kinds of values that can be stored in variables, passed as arguments, returned by methods, and operated upon: primitive values and reference values. The Java virtual machine expects that nearly all type checking is done prior to run time, typically by a compiler, and does not have to be done by the Java virtual machine itself. Values of primitive types need not be tagged or otherwise be inspectable to determine their types at run time, or to be distinguished from values of reference types. Instead, the instruction set of the Java virtual machine distinguishes its operand types using instructions intended to operate on values of specific types. For instance, iadd, ladd, fadd, and dadd are all Java virtual machine instructions that add two numeric values and produce numeric results, but each is specialized for its operand type: int, long, float, and double, respectively. For a summary of type support in the Java virtual machine instruction set, see §3.11.1.The Java virtual machine contains explicit support for objects. An object is either a dynamically allocated class instance or an array. A reference to an object is considered to have Java virtual machine type reference. Values of type reference can be thought of as pointers to objects. More than one reference to an object may exist. Objects are always operated on, passed, and tested via values of type reference. --------------------------------------------------------------------------------3.3 Primitive Types and ValuesThe primitive data types supported by the Java virtual machine are the numeric types, the boolean type (§3.3.4),1 and the returnAddress type (§3.3.3). The numeric types consist of the integral types (§3.3.1) and the floating-point types (§3.3.2). The integral types are: byte, whose values are 8-bit signed two's-complement integersshort, whose values are 16-bit signed two's-complement integersint, whose values are 32-bit signed two's-complement integerslong, whose values are 64-bit signed two's-complement integerschar, whose values are 16-bit unsigned integers representing Unicode characters (§2.1) The floating-point types are: float, whose values are elements of the float value set or, where supported, the float-extended-exponent value set double, whose values are elements of the double value set or, where supported, the double-extended-exponent value set The values of the boolean type encode the truth values true and false.The values of the returnAddress type are pointers to the opcodes of Java virtual machine instructions. Of the primitive types only the returnAddress type is not directly associated with a Java programming language type.3.3.1 Integral Types and ValuesThe values of the integral types of the Java virtual machine are the same as those for the integral types of the Java programming language (§2.4.1): For byte, from -128 to 127 (-27 to 27-1), inclusiveFor short, from -32768 to 32767 (-215 to 215-1), inclusiveFor int, from -2147483648 to 2147483647 (-231 to 231-1), inclusiveFor long, from -9223372036854775808 to 9223372036854775807 (-263 to 263-1), inclusiveFor char, from 0 to 65535 inclusive 3.3.2 Floating-Point Types, Value Sets, and ValuesThe floating-point types are float and double, which are conceptually associated with the 32-bit single-precision and 64-bit double-precision format IEEE 754 values and operations as specified in IEEE Standard for Binary Floating-Point Arithmetic , ANSI/IEEE Std. 754-1985 (IEEE, New York). The IEEE 754 standard includes not only positive and negative sign-magnitude numbers, but also positive and negative zeros, positive and negative infinities, and a special Not-a-Number value (hereafter abbreviated as 'NaN'). The NaN value is used to represent the result of certain invalid operations such as dividing zero by zero.Every implementation of the Java virtual machine is required to support two standard sets of floating-point values, called the float value set and the double value set. In addition, an implementation of the Java virtual machine may, at its option, support either or both of two extended-exponent floating-point value sets, called the float-extended-exponent value set and the double-extended-exponent value set. These extended-exponent value sets may, under certain circumstances, be used instead of the standard value sets to represent the values of type float or double.The finite nonzero values of any floating-point value set can all be expressed in the form s · m· 2(e -N + 1), where s is +1 or -1, m is a positive integer less than 2N, and e is an integer between Emin = - (2K -1-2) and Emax = 2K -1-1, inclusive, and where N and K are parameters that depend on the value set. Some values can be represented in this form in more than one way; for example, supposing that a value v in a value set might be represented in this form using certain values for s, m, and e, then if it happened that m were even and e were less than 2K -1, one could halve m and increase e by 1 to produce a second representation for the same value v. A representation in this form is called normalized if m 2N -1; otherwise the representation is said to be denormalized. If a value in a value set cannot be represented in such a way that m 2N -1, then the value is said to be a denormalized value, because it has no normalized representation.The constraints on the parameters N and K (and on the derived parameters Emin and Emax) for the two required and two optional floating-point value sets are summarized in Table 3.1. Parameter float float-extended- exponent double double-extended- exponent N 24 24 53 53 K 8 11 11 15 Emax +127 +1023 +1023 +16383 Emin -126 -1022 -1022 -16382 Where one or both extended-exponent value sets are supported by an implementation, then for each supported extended-exponent value set there is a specific implementation-dependent constant K, whose value is constrained by Table 3.1; this value K in turn dictates the values for Emin and Emax.Each of the four value sets includes not only the finite nonzero values that are ascribed to it above, but also the five values positive zero, negative zero, positive infinity, negative infinity, and NaN.Note that the constraints in Table 3.1 are designed so that every element of the float value set is necessarily also an element of the float-extended-exponent value set, the double value set, and the double-extended-exponent value set. Likewise, each element of the double value set is necessarily also an element of the double-extended-exponent value set. Each extended-exponent value set has a larger range of exponent values than the corresponding standard value set, but does not have more precision.The elements of the float value set are exactly the values that can be represented using the single floating-point format defined in the IEEE 754 standard, except that there is only one NaN value (IEEE 754 specifies 224 - 2 distinct NaN values). The elements of the double value set are exactly the values that can be represented using the double floating-point format defined in the IEEE 754 standard, except that there is only one NaN value (IEEE 754 specifies 253 - 2 distinct NaN values). Note, however, that the elements of the float-extended-exponent and double-extended-exponent value sets defined here do not correspond to the values that be represented using IEEE 754 single extended and double extended formats, respectively. This specification does not mandate a specific representation for the values of the floating-point value sets except where floating-point values must be represented in the class file format (§4.4.4, §4.4.5).The float, float-extended-exponent, double, and double-extended-exponent value sets are not types. It is always correct for an implementation of the Java virtual machine to use an element of the float value set to represent a value of type float; however, it may be permissible in certain contexts for an implementation to use an element of the float-extended-exponent value set instead. Similarly, it is always correct for an implementation to use an element of the double value set to represent a value of type double; however, it may be permissible in certain contexts for an implementation to use an element of the double-extended-exponent value set instead.Except for NaNs, values of the floating-point value sets are ordered. When arranged from smallest to largest, they are negative infinity, negative finite values, positive and negative zero, positive finite values, and positive infinity.Floating-point positive zero and floating-point negative zero compare as equal, but there are other operations that can distinguish them; for example, dividing 1.0 by 0.0 produces positive infinity, but dividing 1.0 by -0.0 produces negative infinity.NaNs are unordered, so numerical comparisons and tests for numerical equality have the value false if either or both of their operands are NaN. In particular, a test for numerical equality of a value against itself has the value false if and only if the value is NaN. A test for numerical inequality has the value true if either operand is NaN.3.3.3 The returnAddress Type and ValuesThe returnAddress type is used by the Java virtual machine's jsr, ret, and jsr_w instructions. The values of the returnAddress type are pointers to the opcodes of Java virtual machine instructions. Unlike the numeric primitive types, the returnAddress type does not correspond to any Java programming language type and cannot be modified by the running program. 3.3.4 The boolean TypeAlthough the Java virtual machine defines a boolean type, it only provides very limited support for it. There are no Java virtual machine instructions solely dedicated to operations on boolean values. Instead, expressions in the Java programming language that operate on boolean values are compiled to use values of the Java virtual machine int data type. The Java virtual machine does directly support boolean arrays. Its newarray instruction enables creation of boolean arrays. Arrays of type boolean are accessed and modified using the byte array instructions baload and bastore.2The Java virtual machine encodes boolean array components using 1 to represent true and 0 to represent false. Where Java programming language boolean values are mapped by compilers to values of Java virtual machine type int, the compilers must use the same encoding. --------------------------------------------------------------------------------3.4 Reference Types and ValuesThere are three kinds of reference types: class types, array types, and interface types. Their values are references to dynamically created class instances, arrays, or class instances or arrays that implement interfaces, respectively. A reference value may also be the special null reference, a reference to no object, which will be denoted here by null. The null reference initially has no runtime type, but may be cast to any type (§2.4). The Java virtual machine specification does not mandate a concrete value encoding null.--------------------------------------------------------------------------------3.5 Runtime Data AreasThe Java virtual machine defines various runtime data areas that are used during execution of a program. Some of these data areas are created on Java virtual machine start-up and are destroyed only when the Java virtual machine exits. Other data areas are per thread. Per-thread data areas are created when a thread is created and destroyed when the thread exits. 3.5.1 The pc RegisterThe Java virtual machine can support many threads of execution at once (§2.19). Each Java virtual machine thread has its own pc (program counter) register. At any point, each Java virtual machine thread is executing the code of a single method, the current method (§3.6) for that thread. If that method is not native, the pc register contains the address of the Java virtual machine instruction currently being executed. If the method currently being executed by the thread is native, the value of the Java virtual machine's pc register is undefined. The Java virtual machine's pc register is wide enough to hold a returnAddress or a native pointer on the specific platform. 3.5.2 Java Virtual Machine StacksEach Java virtual machine thread has a private Java virtual machine stack, created at the same time as the thread.3 A Java virtual machine stack stores frames (§3.6). A Java virtual machine stack is analogous to the stack of a conventional language such as C: it holds local variables and partial results, and plays a part in method invocation and return. Because the Java virtual machine stack is never manipulated directly except to push and pop frames, frames may be heap allocated. The memory for a Java virtual machine stack does not need to be contiguous. The Java virtual machine specification permits Java virtual machine stacks either to be of a fixed size or to dynamically expand and contract as required by the computation. If the Java virtual machine stacks are of a fixed size, the size of each Java virtual machine stack may be chosen independently when that stack is created. A Java virtual machine implementation may provide the programmer or the user control over the initial size of Java virtual machine stacks, as well as, in the case of dynamically expanding or contracting Java virtual machine stacks, control over the maximum and minimum sizes.4 The following exceptional conditions are associated with Java virtual machine stacks:If the computation in a thread requires a larger Java virtual machine stack than is permitted, the Java virtual machine throws a StackOverflowError. If Java virtual machine stacks can be dynamically expanded, and expansion is attempted but insufficient memory can be made available to effect the expansion, or if insufficient memory can be made available to create the initial Java virtual machine stack for a new thread, the Java virtual machine throws an OutOfMemoryError. 3.5.3 HeapThe Java virtual machine has a heap that is shared among all Java virtual machine threads. The heap is the runtime data area from which memory for all class instances and arrays is allocated. The heap is created on virtual machine start-up. Heap storage for objects is reclaimed by an automatic storage management system (known as a garbage collector); objects are never explicitly deallocated. The Java virtual machine assumes no particular type of automatic storage management system, and the storage management technique may be chosen according to the implementor's system requirements. The heap may be of a fixed size or may be expanded as required by the computation and may be contracted if a larger heap becomes unnecessary. The memory for the heap does not need to be contiguous. A Java virtual machine implementation may provide the programmer or the user control over the initial size of the heap, as well as, if the heap can be dynamically expanded or contracted, control over the maximum and minimum heap size.5 The following exceptional condition is associated with the heap:If a computation requires more heap than can be made available by the automatic storage management system, the Java virtual machine throws an OutOfMemoryError. 3.5.4 Method AreaThe Java virtual machine has a method area that is shared among all Java virtual machine threads. The method area is analogous to the storage area for compiled code of a conventional language or analogous to the 'text' segment in a UNIX process. It stores per-class structures such as the runtime constant pool, field and method data, and the code for methods and constructors, including the special methods (§3.9) used in class and instance initialization and interface type initialization. The method area is created on virtual machine start-up. Although the method area is logically part of the heap, simple implementations may choose not to either garbage collect or compact it. This version of the Java virtual machine specification does not mandate the location of the method area or the policies used to manage compiled code. The method area may be of a fixed size or may be expanded as required by the computation and may be contracted if a larger method area becomes unnecessary. The memory for the method area does not need to be contiguous. A Java virtual machine implementation may provide the programmer or the user control over the initial size of the method area, as well as, in the case of a varying-size method area, control over the maximum and minimum method area size.6The following exceptional condition is associated with the method area:If memory in the method area cannot be made available to satisfy an allocation request, the Java virtual machine throws an OutOfMemoryError. 3.5.5 Runtime Constant PoolA runtime constant pool is a per-class or per-interface runtime representation of the constant_pool table in a class file (§4.4). It contains several kinds of constants, ranging from numeric literals known at compile time to method and field references that must be resolved at run time. The runtime constant pool serves a function similar to that of a symbol table for a conventional programming language, although it contains a wider range of data than a typical symbol table. Each runtime constant pool is allocated from the Java virtual machine's method area (§3.5.4). The runtime constant pool for a class or interface is constructed when the class or interface is created (§5.3) by the Java virtual machine. The following exceptional condition is associated with the construction of the runtime constant pool for a class or interface:When creating a class or interface, if the construction of the runtime constant pool requires more memory than can be made available in the method area of the Java virtual machine, the Java virtual machine throws an OutOfMemoryError. See Chapter 5 for information about the construction of the runtime constant pool.3.5.6 Native Method StacksAn implementation of the Java virtual machine may use conventional stacks, colloquially called 'C stacks,' to support native methods, methods written in a language other than the Java programming language. Native method stacks may also be used by the implementation of an interpreter for the Java virtual machine's instruction set in a language such as C. Java virtual machine implementations that cannot load native methods and that do not themselves rely on conventional stacks need not supply native method stacks. If supplied, native method stacks are typically allocated per thread when each thread is created. The Java virtual machine specification permits native method stacks either to be of a fixed size or to dynamically expand and contract as required by the computation. If the native method stacks are of a fixed size, the size of each native method stack may be chosen independently when that stack is created. In any case, a Java virtual machine implementation may provide the programmer or the user control over the initial size of the native method stacks. In the case of varying-size native method stacks, it may also make available control over the maximum and minimum method stack sizes.7The following exceptional conditions are associated with native method stacks:If the computation in a thread requires a larger native method stack than is permitted, the Java virtual machine throws a StackOverflowError. If native method stacks can be dynamically expanded and native method stack expansion is attempted but insufficient memory can be made available, or if insufficient memory can be made available to create the initial native method stack for a new thread, the Java virtual machine throws an OutOfMemoryError. --------------------------------------------------------------------------------3.6 FramesA frame is used to store data and partial results, as well as to perform dynamic linking , return values for methods, and dispatch exceptions. A new frame is created each time a method is invoked. A frame is destroyed when its method invocation completes, whether that completion is normal or abrupt (it throws an uncaught exception). Frames are allocated from the Java virtual machine stack (§3.5.2) of the thread creating the frame. Each frame has its own array of local variables (§3.6.1), its own operand stack (§3.6.2), and a reference to the runtime constant pool (§3.5.5) of the class of the current method. The sizes of the local variable array and the operand stack are determined at compile time and are supplied along with the code for the method associated with the frame (§4.7.3). Thus the size of the frame data structure depends only on the implementation of the Java virtual machine, and the memory for these structures can be allocated simultaneously on method invocation.Only one frame, the frame for the executing method, is active at any point in a given thread of control. This frame is referred to as the current frame, and its method is known as the current method. The class in which the current method is defined is the current class. Operations on local variables and the operand stack are typically with reference to the current frame. A frame ceases to be current if its method invokes another method or if its method completes. When a method is invoked, a new frame is created and becomes current when control transfers to the new method. On method return, the current frame passes back the result of its method invocation, if any, to the previous frame. The current frame is then discarded as the previous frame becomes the current one.Note that a frame created by a thread is local to that thread and cannot be referenced by any other thread.3.6.1 Local VariablesEach frame (§3.6) contains an array of variables known as its local variables. The length of the local variable array of a frame is determined at compile time and supplied in the binary representation of a class or interface along with the code for the method associated with the frame (§4.7.3). A single local variable can hold a value of type boolean, byte, char, short, int, float, reference, or returnAddress. A pair of local variables can hold a value of type long or double.Local variables are addressed by indexing. The index of the first local variable is zero. An integer is be considered to be an index into the local variable array if and only if that integer is between zero and one less than the size of the local variable array. A value of type long or type double occupies two consecutive local variables. Such a value may only be addressed using the lesser index. For example, a value of type double stored in the local variable array at index n actually occupies the local variables with indices n and n +1; however, the local variable at index n +1 cannot be loaded from. It can be stored into. However, doing so invalidates the contents of local variable n.The Java virtual machine does not require n to be even. In intuitive terms, values of types double and long need not be 64-bit aligned in the local variables array. Implementors are free to decide the appropriate way to represent such values using the two local variables reserved for the value.The Java virtual machine uses local variables to pass parameters on method invocation. On class method invocation any parameters are passed in consecutive local variables starting from local variable 0. On instance method invocation, local variable 0 is always used to pass a reference to the object on which the instance method is being invoked (this in the Java programming language). Any parameters are subsequently passed in consecutive local variables starting from local variable 1.3.6.2 Operand StacksEach frame (§3.6) contains a last-in-first-out (LIFO) stack known as its operand stack. The maximum depth of the operand stack of a frame is determined at compile time and is supplied along with the code for the method associated with the frame (§4.7.3). Where it is clear by context, we will sometimes refer to the operand stack of the current frame as simply the operand stack.The operand stack is empty when the frame that contains it is created. The Java virtual machine supplies instructions to load constants or values from local variables or fields onto the operand stack. Other Java virtual machine instructions take operands from the operand stack, operate on them, and push the result back onto the operand stack. The operand stack is also used to prepare parameters to be passed to methods and to receive method results. For example, the iadd instruction adds two int values together. It requires that the int values to be added be the top two values of the operand stack, pushed there by previous instructions. Both of the int values are popped from the operand stack. They are added, and their sum is pushed back onto the operand stack. Subcomputations may be nested on the operand stack, resulting in values that can be used by the encompassing computation. Each entry on the operand stack can hold a value of any Java virtual machine type, including a value of type long or type double. Values from the operand stack must be operated upon in ways appropriate to their types. It is not possible, for example, to push two int values and subsequently treat them as a long or to push two float values and subsequently add them with an iadd instruction. A small number of Java virtual machine instructions (the dup instructions and swap) operate on runtime data areas as raw values without regard to their specific types; these instructions are defined in such a way that they cannot be used to modify or break up individual values. These restrictions on operand stack manipulation are enforced through class file verification (§4.9).At any point in time an operand stack has an associated depth, where a value of type long or double contributes two units to the depth and a value of any other type contributes one unit.3.6.3 Dynamic LinkingEach frame (§3.6) contains a reference to the runtime constant pool (§3.5.5) for the type of the current method to support dynamic linking of the method code. The class file code for a method refers to methods to be invoked and variables to be accessed via symbolic references. Dynamic linking translates these symbolic method references into concrete method references, loading classes as necessary to resolve as-yet-undefined symbols, and translates variable accesses into appropriate offsets in storage structures associated with the runtime location of these variables. This late binding of the methods and variables makes changes in other classes that a method uses less likely to break this code.3.6.4 Normal Method Invocation CompletionA method invocation completes normally if that invocation does not cause an exception (§2.16, §3.10) to be thrown, either directly from the Java virtual machine or as a result of executing an explicit throw statement. If the invocation of the current method completes normally, then a value may be returned to the invoking method. This occurs when the invoked method executes one of the return instructions (§3.11.8), the choice of which must be appropriate for the type of the value being returned (if any). The current frame (§3.6) is used in this case to restore the state of the invoker, including its local variables and operand stack, with the program counter of the invoker appropriately incremented to skip past the method invocation instruction. Execution then continues normally in the invoking method's frame with the returned value (if any) pushed onto the operand stack of that frame.3.6.5 Abrupt Method Invocation CompletionA method invocation completes abruptly if execution of a Java virtual machine instruction within the method causes the Java virtual machine to throw an exception (§2.16, §3.10), and that exception is not handled within the method. Execution of an athrow instruction also causes an exception to be explicitly thrown and, if the exception is not caught by the current method, results in abrupt method invocation completion. A method invocation that completes abruptly never returns a value to its invoker. 3.6.6 Additional InformationA frame may be extended with additional implementation-specific information, such as debugging information. Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
標簽: Java
相關文章:
主站蜘蛛池模板: 在线看国产| 国产精品高清一区二区 | 久久综合久久综合久久 | 精品成人一区 | 欧美日韩亚洲一区二区 | 国产超碰人人模人人爽人人添 | 亚洲免费视频在线观看 | 国产日韩精品一区二区 | 久久一区二区三区四区 | 日本中文在线 | 亚洲一区中文字幕在线观看 | 艹艹网 | 亚洲激情在线观看 | 亚洲成人伦理 | 日韩成人小视频 | 国产成人精品一区二区三区视频 | 成人精品一区 | 亚洲精品久久久久久久久久 | 一区二区欧美在线 | a级毛片久久 | 国产精品久久久久久久久久久久久 | 国产中文在线 | 日韩一区二区在线播放 | 7799精品视频 | 久久精品视频网站 | 亚洲a网| 国产日韩欧美一区 | 久久人体视频 | 国产一区二区在线看 | www91在线观看 | 天天干天天躁 | 久久一级 | 欧美日韩精品一区二区三区 | av中文字幕在线播放 | 中文字幕一区二区三区乱码图片 | 久久久久久久久久穴 | 国产不卡视频在线观看 | 日韩欧美一区二区三区久久婷婷 | 亚洲午夜精品视频 | 久久在线播放 | 女人久久久久久久 | 国产日韩欧美一二三区 | 成人免费在线观看视频 | 日韩精品一区二 | 国产精品日韩一区二区 | 亚洲成人精品久久 | 成人三级在线 | 成人影院在线 | 99国产精品99久久久久久 | 成人日批视频 | 欧美片网站免费 | 免费观看一级毛片 | 亚洲永久免费 | 国产精品视频网站 | 小川阿佐美88av在线播放 | www精品美女久久久tv | 欧美一区二区三区在线观看 | 可以看黄的视频 | 国产精品一二三区 | 香蕉av777xxx色综合一区 | 日韩午夜一级片 | 国产精品成人av | 99久久免费看视频 | 亚洲一区在线免费观看 | 97国产一区二区精品久久呦 | 91亚洲国产成人久久精品网站 | 欧美激情欧美激情在线五月 | 欧美一区二区三区在线视频 | 成人在线观看免费视频 | 精品国产31久久久久久 | www久久久| 国产激情网址 | 艹艹网 | 羞羞视频在线观看入口 | 一区二区三区在线免费播放 | 中文字幕在线观看一区二区三区 | 亚洲免费在线观看 | 二区免费视频 | 2018天天操| 欧美日韩国产综合视频 | 我要看a级毛片 | 国产一级特黄aaa大片评分 | 少妇久久久| 777kkk999成人ww| 国产精品视频免费观看 | 亚洲成人在线视频观看 | 成人国产在线观看 | 成人黄色短视频在线观看 | 国产欧美综合一区二区三区 | 中文字幕视频在线观看 | 久久精品在线视频 | 中文字幕一二三区 | 国产激情在线 | 国产精品黄视频 | 成人天堂资源www在线 | 国产999免费视频 | av一区二区在线观看 | 久久久999精品视频 99国产精品久久久久久久 | 精品国产乱码久久久久久久软件 | 99精品欧美一区二区三区 | 日本精品一区二区三区在线观看 | 成人福利 | 91亚色| 日韩国产二区 | 久久99这里只有精品 | 一区二区三区有限公司 | 国产乱码一区二区三区在线观看 | 亚洲女人天堂网 | 成人av免费 | 在线成人亚洲 | 亚洲精品一区二区三区蜜桃久 | 一区二区三区免费 | 久久精品国产亚洲一区二区三区 | 在线视频国产一区 | 久久精品久久久久久久久久久久久 | 欧美性一区二区 | 亚洲综合中文网 | 国产91精品在线 | 国产视频一二三区 | 亚洲午夜视频 | 91综合视频在线观看 | 欧美日韩在线观看中文字幕 | 国产精品第2页 | 麻豆av在线播放 | 亚洲午夜精品一区二区三区他趣 | 性免费网站 | 久久精品国产亚洲精品 | 亚洲欧美中文日韩v在线观看 | 亚洲a网 | 黄色一级视屏 | 国产a久久精品一区二区三区 | 成人精品鲁一区一区二区 | 欧美午夜一区二区三区免费大片 | 50人群体交乱视频 | 91视频.www | 日韩国产在线观看 | 福利片一区二区 | 久久999免费视频 | 国产一区二区视频在线观看 | 国产在线视频xxx | 精品久久久成人 | 美女操av | 成人亚洲视频 | 亚洲久久久久 | 国产日本欧美在线 | 夜夜天天操 | 久久伊 | www.一区二区 | 午夜天 | 精品久久网 | 老司机深夜福利视频 | 国产成人免费视频网站高清观看视频 | 黄色片在线免费观看 | 黄色免费高清视频 | 欧美狠狠操| 欧美日韩一区二区在线 | 亚洲国产aⅴ成人精品无吗 一区视频在线 | 久久久.com | 亚洲综合区 | 亚洲视频在线观看免费 | 美女久久 | 欧美不卡一区二区三区 | 久久精品欧美一区二区三区不卡 | 久久久久久久网站 | 高清三区 | 亚洲夜幕久久日韩精品一区 | 亚洲人成人一区二区在线观看 | 亚洲精品一二三区 | 超碰偷拍 | 91午夜伦伦电影理论片 | 成人在线观看免费 | 国产人久久人人人人爽 | 日韩在线中文字幕 | 欧美日韩中文字幕 | 欧美专区在线观看 | 亚洲永久免费观看 | 日韩在线播放一区二区 | 日韩一区二区在线播放 | 成人福利视频 | 亚洲欧美日韩一区二区 | 国产精品无码永久免费888 | 在线观看免费黄色小视频 | 日本久久精品电影 | 中文字幕在线看 | 国产美女久久久 | 一区二区三区久久久久久 | 久久亚洲一区二区三区四区 | 五月婷婷丁香 | 最新午夜综合福利视频 | 99精品欧美一区二区三区综合在线 | 欧美日韩精品一区二区在线播放 | 亚洲视频区| 成人三级视频网站 | 日本高清中文字幕 | 欧美一区久久 | 欧美一级免费 | 日韩在线观看精品 | 国产黄色大片 | 亚洲色图p | 天天澡天天狠天天天做 | 男女深夜网站 | 国产乱码精品一区二区三区av | 亚洲爽爽 | 国产精品久久久久久久久久 | 久久777| 九色 在线 | 亚洲精品亚洲人成人网 | 欧美一区2区三区4区公司二百 | 国产亚洲精品久久久优势 | 夜夜夜操操操 | 久久精品手机视频 | 美女视频一区二区三区 | 97国产在线 | 最新天堂中文在线 | 一区二区日韩精品 | 精品亚洲一区二区三区 | 欧美精品欧美精品系列 | 中文字幕天堂在线 | 亚洲精品中文字幕 | 久久久999精品视频 99国产精品久久久久久久 | 国产女爽123视频.cno | 国产免费观看一区二区三区 | 91视频三区| 久久久久国产视频 | 免费午夜电影 | 天堂网色 | 99精品国产高清在线观看 | 中文字幕在线免费视频 | 国产亚洲一区二区三区在线观看 | 中文字幕高清av | 国产成人一区二区 | 亚洲精品二区 | 亚洲精品中文字幕乱码无线 | 日韩超级大片免费看国产国产播放器 | 一区二区三区福利视频 | 日韩中文字幕免费在线 | 欧美电影一区 | 精品久久久久久久久久久久 | 日韩欧美在线观看视频 | 日韩中文视频 | 最新中文字幕视频 | 成人免费视屏 | 日韩久久久久久 | 欧美激情精品 | 精品视频在线播放 | 日本午夜在线 | av在线网址观看 | 亚洲天堂一区二区 | 日韩不卡一区二区 | 黄色成人在线 | 激情一区| 成人在线精品 | 国产成人精品午夜视频' | 91精品国产综合久久久久久蜜臀 | 欧美日韩视频在线 | 亚洲欧美一级久久精品 | 91亚洲日本| 国产精品视频播放 | 国产一级视频免费观看 | 91亚洲日本aⅴ精品一区二区 | 国产在线免费 | 亚洲欧美日韩国产综合精品二区 | 亚洲一区二区三区福利 | 久久久精品一区二区三区 | 中文字幕av在线播放 | 久久久久国产精品免费免费搜索 | 久久av网| 狠狠干干| 久久久久久免费毛片精品 | 91资源在线 | 七龙珠z普通话国语版在线观看 | 国产区福利 | 午夜视频在线免费观看 | 丁香午夜| 午夜精品一区二区三区在线播放 | 亚洲精品乱码久久久久久蜜桃不卡 | 国产精品久久久久毛片软件 | 伊人网在线视频观看 | 亚洲精品日韩激情欧美 | 日日操综合 | 草樱av| 日本美女一区二区 | 国产精品福利久久 | 精品成人在线 | 亚洲欧美激情精品一区二区 | 中文字幕高清在线 | 天堂中文av在线 | 亚洲视频在线观看 | 久久伊 | 黄在线免费观看 | 五月婷婷导航 | 欧美日韩中文在线 | 亚洲人人舔人人 | 日韩免费在线视频 | 国产成人精品一区二区在线 | 久久99精品久久久久蜜臀 | 亚洲国产精品麻豆 | 日韩色综合 | 97成人在线免费视频 | 99精品一区二区三区 | 国产在线精品一区 | 激情欧美一区二区三区中文字幕 | 久久精品免费看 | 亚洲免费视频网 | 亚洲毛片在线 | 国产情侣av自拍 | 夜操| 久久国产精品一区二区 | 色偷偷噜噜噜亚洲男人 | 九色91视频 | 亚洲欧美网址 | 精品中文字幕一区二区三区 | 国产精品久久久久久久久久久久久久 | 久久韩国| 亚洲欧美综合乱码精品成人网 | 亚洲精品一区国产精品 | 午夜社区 | 久久精品国产99国产精品 | 亚洲欧美高清 | 毛片一区二区三区 | 欧美一级三级 | 伊人yinren22综合开心 | 热久久免费视频 | 国产精品国产三级国产aⅴ入口 | 91精品国产综合久久久久久蜜月 | 精品一区二区三区免费毛片爱 | 噜噜噜噜噜色 | 亚洲免费在线观看视频 | 91国产精品 | 国产成人精品久久 | 色小妹一二三区 | 国产一级片| 色女人的天堂 | 国产乱码精品一区二区三区忘忧草 | 成人妇女免费播放久久久 | 欧美日韩一区二区视频在线观看 | 96自拍视频 | www日批| 欧美成人一区二区三区片免费 | 天天夜操| 黄色毛片在线看 | 超碰在线观看97 | 欧美精品xx | 欧美精品成人一区二区三区四区 | 在线国产一区二区 | 国产精品视频一区二区三区不卡 | 天天天天天天天天操 | 中国大陆高清aⅴ毛片 | 久久久一区二区 | 福利片一区二区 | 国产精品天堂 | 国产日韩欧美一区 | av网站观看| 欧美高潮 | 久久久精品免费观看 | 91精品久久久久久久 | 黄在线看| 国产妇女乱码一区二区三区 | 欧美日韩精品在线 | 日韩精品一区二区三区 | 伊人小视频| 国产三级精品在线 | 日本福利网站 | 天天操,夜夜操 | 伊人天堂网 | 亚洲免费在线 | 中文视频一区 | 人操人人人 | 久久人人网 | 日韩精品一区二区在线观看 | 日日夜夜一区二区 | 欧美一级c片| 亚洲一区二区三区精品视频 | 午夜影院黄色 | 亚洲一区二区三区视频 | 国产午夜精品一区二区三区 | 成人中文视频 | 久久久久国产一区 | 嫩草视频在线观看免费 | 无毒黄网 | 欧美日韩在线精品 | 自拍偷拍欧美 | 高清av在线 | 日本一级在线观看 | 中文字幕一区二区三区不卡 | 久久男女视频 | av成人免费 | 麻豆久久精品 | 红杏aⅴ成人免费视频 | 青青草91在线视频 | 久久久久久国产精品 | 亚洲视频自拍 | 成人在线观 | 91 久久| 成人免费在线观看视频 | 久久精品久久久久久久久久久久久 | 久久精品国产99 | 在线观看黄色大片 | 国产精品主播 | 日本免费一区二区视频 | 99免费观看视频 | 伊人网一区 | 久久伊人在 | 久久综合久色欧美综合狠狠 | 久久精品亚洲精品国产欧美kt∨ | 91大神在线看 | 91免费在线播放 | 中文字幕一区在线观看视频 | 九色91九色porny永久 | 欧美久久久久久久久久久久 | 国产精品久久一区二区三区 | 国产日韩在线视频 | 四虎永久免费在线 | 成人亚洲网站 | 在线免费色视频 | 日韩综合一区 | 国产91久久久 | 成人精品视频99在线观看免费 | 国产一区二区在线免费 | 伊人看片| 久久精品国产一区二区电影 | 成人免费共享视频 | 国产精品久久久久久久久免费 | 999精品网 | 精品亚洲国产成av人片传媒 | 欧美成人午夜视频 | 91精品国产91久久久久久密臀 | 免费一区二区三区 | 亚洲精品在线免费看 | 久久久久国产一区二区三区 | 一区二区三区在线视频播放 | 亚洲免费视频在线观看 | 久久青 | 午夜四虎| 欧美日韩在线播放 | 欧美成人精品一区二区 | 日日操夜夜操天天操 | 亚洲精品久久久久久久久久久 | 不卡免费在线视频 | 久久久久久亚洲 | 久久成人综合 | 欧美性猛xxx | 国产午夜精品一区二区 | 久草电影网 | 亚洲国产精品网站 | 91伊人网 | 一区二区不卡视频 | 91中文字幕在线 | 日日爱夜夜爱 | 成人国产精品一级毛片视频 | 在线视频91| 欧美日韩中文国产一区发布 | 欧美一区永久视频免费观看 | 狠狠干天天干 | 91在线视频观看 | 欧美日韩在线一区二区 | 日韩一区二区精品 | 国产一区二区三区免费 | 色综合一区 | 伊人爽| 奇米精品一区二区三区在线观看 | 插插射啊爱视频日a级 | 亚洲视频免费 | 国产精品一二区 | 欧美日韩精品电影 | 午夜影院普通用户体验区 | 国产精品毛片 | 精品国产乱码久久久久久蜜柚 | 一级毛片视频播放 | 欧美一区二区三区视频 | 日韩精品日韩激情日韩综合 | 91小视频| 国产一区二区三区精品久久久 | 久久国产精品免费一区二区三区 | 中文字幕视频三区 | 精品久久久久久亚洲综合网 | 日韩欧美在线播放视频 | 青青久久av北条麻妃海外网 | 99国产精品一区 | 黄在线看v | 成人水多啪啪片 | 日本一区二区成人 | 六月婷操 | 超碰一区二区三区 | 亚洲 欧美 精品 | 一级在线观看视频 | av看片网 | 亚洲国产成人久久综合一区,久久久国产99 | 欧美日韩一区在线 | 国产三级 | 亚洲www视频| 国产成人网| 青青久久北条麻妃 | 久热亚洲 | 在线永久免费观看日韩a | 亚洲精品成人 | 亚洲精品乱码久久久久膏 | 国产精品无码永久免费888 | 欧美一级h | 欧美日韩亚洲在线 | 久久久国产精品入口麻豆 | 夜夜操操操 | 狠狠艹av | 免费一区 | 国产精品久久久久久久久久 | 国产视频久久久 | 久久成人免费观看 | 四虎影音 | 久久久久久久91 | 国产精品久久久久久久久免费桃花 | 久久草视频 | 亚洲天堂一区二区三区 | 国产一区二区高潮 | 国产综合久久久 | 免费一区二区三区视频在线 | 欧美精品一级二级 | 欧美精品国产精品 | 国产精品久久久久久一级毛片 | 亚洲精品成人av | 国产一二三区在线播放 | 成人影院欧美黄色 | 黄色毛片在线看 | 97超碰在线免费 | 久久久久久久9 | 成人在线免费 | 日韩三级电影在线免费观看 | 九九综合| 国产精品婷婷午夜在线观看 | 久久免费精品 | 一区二区三区四区在线视频 | 国产精品久久久久久久久免费软件 | 免费看的黄色网 | 日韩中文字幕电影 | 国产欧美综合一区 | 国产精品视频在线观看 | 69久久99精品久久久久婷婷 | 君岛美绪一区二区三区在线视频 | 久久99热精品免费观看牛牛 | 亚洲1级片 | 欧美久久免费观看 | 国产精品成人一区二区三区 | 91资源在线观看 | 三级在线观看 | 精品国产欧美一区二区三区成人 | 日韩中文字幕免费视频 | 91丨九色丨国产在线 | 欧美狠狠操 | 老汉色影院 | 国产精品久久久99 | 免费黄色大片 | 亚洲免费在线视频 | www国产成人免费观看视频,深夜成人网 | 在线观看91 | 蜜桃视频一区二区三区 | 中文字幕一区二区三区不卡 | 欧美日韩在线一区 | 欧美一区永久视频免费观看 | www中文字幕| 久久综合狠狠综合久久综合88 | 狠狠做深爱婷婷综合一区 | 91视频在线观看 | 99色在线视频 | 黄色网址av | 色橹橹欧美在线观看视频高清 | 日本一区二区三区免费观看 | 久久中文字幕一区二区 | 欧美中文在线 | 韩国三级午夜理伦三级三 | 国产精品一区在线 | 亚洲精品片 | 欧美一级免费 | 国产一区二区三区四区视频 | 播放毛片| 久久久久国产一区二区三区四区 | 国产福利片在线观看 | 久久精品一区二区三区四区 | 欧洲精品在线观看 | 中文字幕在线导航 | 国产主播福利 | 国产伦精品一区二区三区在线 | 中文字幕视频在线免费 | 国产不卡视频在线观看 | 午夜视频 | 日本精品久久久一区二区三区 | 毛片在线免费 | 久久久97| 日韩欧美一区二区三区免费观看 | 久久久综合网 | 国产精品久久久久久久久久 | 91精品国产综合久久久久久丝袜 | 日韩免费在线观看视频 | 日本视频二区 | 91久久久久 | 欧美二三区 | 亚洲欧洲无码一区二区三区 | 欧美一级免费看 | 久一久久| 99精品欧美一区二区三区综合在线 | 亚洲欧美高清 | 国产欧美视频在线 | 欧美日韩亚洲国产综合 | www.久久.com| 一区二区免费 | 国产精品免费一区二区三区四区 | 国产视频久久久久久 | 精品自拍网 | 免费三级黄色 | 亚洲天堂av网 | 天天操天天干天天爽 | 国产精品18 | 丝袜 亚洲 另类 欧美 综合 | 国产精品一区二区三区在线 | 国产综合视频在线观看 | 武道仙尊动漫在线观看 | 中文字幕一区二区三区乱码图片 |