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

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

?? chapter 4 variables and constants -- valvano.htm

?? Developing Embedded Software in C
?? HTM
?? 第 1 頁 / 共 5 頁
字號:
unspecified memory (stack) locations, then how does the program find them? This 
is done by using the pointer register (X) to designate a stack frame for the 
currently active function. There is a difference between the ICC11 and ICC12 
compilers. The ICC11 compiler generates code that will define a new value of X 
(executing the <B>tsx</B> instruction) whenever it wishes to access a local 
variable. Consequently we see many <B>tsx</B> instructions throughout the 
function. On the other hand, the ICC12 compiler generates code that attempts to 
define the stack frame pointer x only once at the beginning of the function. 
Consequently we usually see only one <B>tfr s,x</B> instruction in each the 
function. The 6812 <B>tfr s,x</B> instruction is just an alternative 
specification of the instruction <B>tsx</B> (i.e., they produce the same machine 
code and perform the same function when executed). When the ICC12 function is 
entered, the prior value of Register X is pushed onto the stack and then the new 
value of SP is moved to X. The ICC11 function does not save the prior value of 
Register X. This address--the new value of SP--then becomes the base for 
references to local variables that are declared within the function. The 6812 
has a much richer set of machine instructions and addressing modes to simplify 
this process. The 6811 SP register points to a free memory space to be used to 
place the next byte to be pushed. On the other hand the 6812 SP register points 
to the top data byte that has already been pushed.</FONT></P>
<P><FONT face="Times New Roman,Times">In order to understand both the machine 
architecture and the C compiler, we can look at the assembly code generated. For 
both the ICC11 and ICC12 compilers, the linker/loader allocates 3 segmented 
memory areas: code pointed to by the PC (<I>text area</I>); global accessed with 
absolute addressing (<I>data area</I>); and locals pointed to by the stack 
pointer SP. This example shows a simple C program with three local variables. 
Although the function doesn't do much it will serve to illustrate how local 
variables are created (allocation), accessed (read and write) and destroyed 
(deallocated.)</FONT></P>
<DIR>
<P><CODE>void sub(void){ short y1,y2,y3;&nbsp;&nbsp;&nbsp;/* 3 local 
variables*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;y1=1000;<BR>&nbsp;&nbsp;&nbsp;&nbsp;y2=2000;<BR>&nbsp;&nbsp;&nbsp;&nbsp;y3=y1+y2;<BR>}</CODE></P></DIR>
<ADDRESS><FONT face="Times New Roman,Times">Listing 4-9: Example showing three 
local variables</FONT></ADDRESS>
<P><FONT face="Times New Roman,Times">The first compiler we will study is the 
ImageCraft ICC11 version 4.0 for the Motorola 6811. The disassembled output has 
been edited to clarify its operation (although the compiler does create the 
";&nbsp;y3&nbsp;-&gt;&nbsp;0,x" comment). The <B>pshx</B> instruction allocates 
the local variable, and the <B>tsx</B> instruction establishes a stack frame 
pointer, X. </FONT></P>
<DIR>
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;.area&nbsp;text&nbsp;&nbsp;&nbsp;; _sub in 
ROM<BR>&nbsp;&nbsp;&nbsp;&nbsp;.globl&nbsp;_main<BR>;&nbsp;y3&nbsp;-&gt;&nbsp;0,x<BR>;&nbsp;y2&nbsp;-&gt;&nbsp;2,x<BR>;&nbsp;y1&nbsp;-&gt;&nbsp;4,x<BR>_sub:&nbsp;pshx&nbsp;&nbsp;; 
allocate y1<BR>&nbsp;&nbsp;&nbsp;&nbsp;pshx&nbsp;&nbsp;&nbsp;&nbsp;; allocate 
y2<BR>&nbsp;&nbsp;&nbsp;&nbsp;pshx&nbsp;&nbsp;&nbsp;&nbsp;; allocate 
y3<BR>&nbsp;&nbsp;&nbsp;&nbsp;tsx<BR>&nbsp;&nbsp;&nbsp;&nbsp;ldd&nbsp;&nbsp;#1000&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;std&nbsp;&nbsp;4,x&nbsp;&nbsp;&nbsp;;&nbsp;y1=1000<BR>&nbsp;&nbsp;&nbsp;&nbsp;ldd&nbsp;&nbsp;#2000<BR>&nbsp;&nbsp;&nbsp;&nbsp;std&nbsp;&nbsp;2,x&nbsp;&nbsp;&nbsp;;&nbsp;y2=2000<BR>&nbsp;&nbsp;&nbsp;&nbsp;ldd&nbsp;&nbsp;4,x<BR>&nbsp;&nbsp;&nbsp;&nbsp;addd&nbsp;2,x<BR>&nbsp;&nbsp;&nbsp;&nbsp;std&nbsp;&nbsp;0,x&nbsp;&nbsp;;&nbsp;y3=y1+y2<BR>&nbsp;&nbsp;&nbsp;&nbsp;pulx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; 
deallocate 
y3<BR>&nbsp;&nbsp;&nbsp;&nbsp;pulx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; 
deallocate 
y2<BR>&nbsp;&nbsp;&nbsp;&nbsp;pulx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; 
deallocate y1<BR>&nbsp;&nbsp;&nbsp;&nbsp;rts</CODE></P></DIR>
<P><FONT face="Times New Roman,Times">The stack frame at the time of the 
<B>addd</B> instruction is shown. Within the subroutine the local variables of 
other functions are not accessible.</FONT></P>
<CENTER>
<P><IMG height=103 
src="Chapter 4 Variables and Constants -- Valvano.files/stack11a.gif" 
width=218></P></CENTER>
<ADDRESS>Figure 4-1. 6811 stack frame showing three local variables.</ADDRESS>
<P><FONT face="Times New Roman,Times">The next compiler we will study is the 
ImageCraft ICC12 version 5.0 for the Motorola 6812. Again, the disassembled 
output has been edited to clarify its operation (although the compiler does 
create the "</FONT><FONT face=Courier>;&nbsp;y3&nbsp;-&gt;&nbsp;-6,x</FONT><FONT 
face="Times New Roman,Times">" comment). Like the 6811, the linker/loader also 
allocates 3 segmented memory areas: code pointed to by the PC; global accessed 
with absolute addressing; and locals pointed to by the stack pointer SP. 
The</FONT><FONT face=Courier> <B>leas -6,sp</B></FONT><FONT 
face="Times New Roman,Times"> instruction allocates the local variables, and 
the</FONT><B><FONT face=Courier> tfr s,x</FONT></B><FONT face=Courier> 
</FONT><FONT face="Times New Roman,Times">instruction establishes a stack frame 
pointer, X. Within the subroutine the local variables of other functions are not 
accessible.</FONT></P>
<CENTER>
<P><IMG height=322 
src="Chapter 4 Variables and Constants -- Valvano.files/lv.gif" 
width=370>&nbsp;</P></CENTER>
<ADDRESS>Figure 4-2. 6812 implementation of three local variables.</ADDRESS>
<P>&nbsp;</P>
<P><FONT face="Times New Roman,Times"><A name=CONSTANTLOCAL></A>A <B>constant 
local</B> is similar to the regular local. Just as with the other locals, the 
constant is defined temporarily on the stack. The difference is that the 
constant local can not be changed. The assembly language code generated by the 
compiler that accesses the constant local is identical to the regular local. 
</FONT></P>
<DIR>
<P><CODE>short TheGlobal;&nbsp;&nbsp;&nbsp;/* a regular global 
variable*/<BR>void main(void){ <BR>&nbsp;&nbsp;&nbsp;&nbsp;const short 
TheConstant=1000;&nbsp;&nbsp;&nbsp;/* a constant 
local*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;TheGlobal=TheConstant;<BR>}</CODE></P></DIR>
<ADDRESS>Listing 4-10: Example showing a constant local </ADDRESS>
<P><FONT face="Times New Roman,Times">The 6811 code generated by the ICC11 
(Version 4) compiler is as follows</FONT></P>
<DIR>
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;.area&nbsp;text&nbsp;&nbsp;&nbsp;; _main in 
ROM<BR>&nbsp;&nbsp;&nbsp;&nbsp;.global 
_main<BR>;&nbsp;TheConstant&nbsp;-&gt;&nbsp;0,x<BR>_main: pshx&nbsp;&nbsp;; 
allocate 
TheConstant<BR>&nbsp;&nbsp;&nbsp;&nbsp;tsx<BR>&nbsp;&nbsp;&nbsp;&nbsp;ldd&nbsp;&nbsp;#1000<BR>&nbsp;&nbsp;&nbsp;&nbsp;std&nbsp;&nbsp;0,x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;TheConstant=1000<BR>&nbsp;&nbsp;&nbsp;&nbsp;std&nbsp;&nbsp;_TheGlobal&nbsp;&nbsp;;&nbsp;TheGlobal=TheConstant<BR>&nbsp;&nbsp;&nbsp;&nbsp;pulx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; 
deallocate 
TheConstant<BR>&nbsp;&nbsp;&nbsp;&nbsp;rts<BR>&nbsp;&nbsp;&nbsp;&nbsp;.area 
bss<BR>&nbsp;&nbsp;&nbsp;&nbsp;.global _TheGlobal<BR>_TheGlobal: .blkb 2 
</CODE></P></DIR>
<P><FONT face="Times New Roman,Times">The 6812 code generated by the ICC12 
(Version 5.1) compiler is as follows</FONT></P>
<DIR>
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;.area text <BR>_main:: 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;pshx<BR>&nbsp;&nbsp;&nbsp;&nbsp;tfr 
s,x<BR>&nbsp;&nbsp;&nbsp;&nbsp;leas -2,sp <BR>&nbsp;&nbsp;&nbsp;&nbsp;movw 
#1000,-2,x <BR>&nbsp;&nbsp;&nbsp;&nbsp;movw -2,x,_TheGlobal 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;tfr 
x,s<BR>&nbsp;&nbsp;&nbsp;&nbsp;pulx<BR>&nbsp;&nbsp;&nbsp;&nbsp;rts 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;.area bss <BR>_TheGlobal:: .blkb 2 </CODE></P>
<P>&nbsp;</P></DIR>
<P><B><I><FONT face=Helvetica,Arial><A 
name=EXTERNAL></A>Externals</FONT></I></B></P>
<P><FONT face="Times New Roman,Times">Objects that are defined outside of the 
present source module have the external storage class. This means that, although 
the compiler knows what they are (signed/unsigned, 8-bit 16-bit 32-bit etc.), it 
has no idea where they are. It simply refers to them by name without reserving 
space for them. Then when the linker brings together the object modules, it 
resolves these "pending" references by finding the external objects and 
inserting their addresses into the instructions that refer to them. The compiler 
knows an external variable by the keyword <B>extern</B> that must precede its 
declaration.</FONT></P>
<P><FONT face="Times New Roman,Times">Only global declarations can be designated 
extern and only globals in other modules can be referenced as 
external.</FONT></P>
<P><FONT face="Times New Roman,Times">The following example sets an external 
global, called <B>ExtGlobal</B>, to the value 1000. This global can be 
referenced by any function from any file in the software system. It is truly 
global.</FONT></P>
<DIR>
<P><CODE>extern short ExtGlobal;&nbsp;&nbsp;&nbsp;/* an external global 
variable*/<BR>void main(void){ 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;ExtGlobal=1000;&nbsp;&nbsp;&nbsp;&nbsp;<BR>}</CODE></P></DIR>
<ADDRESS>Listing 4-11: Example showing an external global</ADDRESS>
<P><FONT face="Times New Roman,Times">Notice the assembly language the ICC11 
generates does not include the definition of <B>ExtGlobal</B>. The 6811 code 
generated by the ICC11 (Version 4) compiler is as follows</FONT></P>
<DIR>
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;.area text <BR>&nbsp;&nbsp;&nbsp;&nbsp;.global 
_main<BR>_main:<BR>&nbsp;&nbsp;&nbsp;&nbsp;ldd #1000 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;std _ExtGlobal <BR>&nbsp;&nbsp;&nbsp;&nbsp;rts 
</CODE></P></DIR>
<P><FONT face="Times New Roman,Times">Similarly the assembly language the ICC12 
generates also does not include the definition of <B>ExtGlobal</B>. The 6812 
code generated by the ICC12 (Version 5.1) compiler is as follows</FONT></P>
<DIR>
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;.area text <BR>_main:: 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;movw #1000,_ExtGlobal 
<BR>&nbsp;&nbsp;&nbsp;&nbsp;rts </CODE></P>
<P>&nbsp;</P></DIR>
<P><B><I><FONT face=Helvetica,Arial><A name=SCOPE></A>Scope</FONT></I></B></P>
<P><FONT face="Times New Roman,Times">The <I>scope</I> of a variable is the 
portion of the program from which it can be referenced. We might say that a 
variable's scope is the part of the program that "knows" or "sees" the variable. 
As we shall see, different rules determine the scopes of global and local 
objects.</FONT></P>
<P><FONT face="Times New Roman,Times">When a variable is declared globally 
(outside of a function) its scope is the part of the source file that follows 
the declaration--any function following the declaration can refer to it. 
Functions that precede the declaration cannot refer to it. Most C compilers 
would issue an error message in that case. </FONT></P>
<P><FONT face="Times New Roman,Times">The scope of local variables is the block 
in which they are declared. Local declarations must be grouped together before 
the first executable statement in the block--at the head of the block. This is 
different from C++ that allows local variables to be declared anywhere in the 
function. It follows that the scope of a local variable effectively includes all 
of the block in which it is declared. Since blocks can be nested, it also 
follows that local variables are seen in all blocks that are contained in the 
one that declares the variables.</FONT></P>
<P><FONT face="Times New Roman,Times">If we declare a local variable with the 
same name as a global object or another local in a superior block, the new 
variable temporarily supersedes the higher level declarations. Consider the 
following program.</FONT></P>
<DIR>
<P><CODE>unsigned char x;&nbsp;&nbsp;&nbsp;/* a regular global 
variable*/<BR>void 
sub(void){<BR>&nbsp;&nbsp;&nbsp;&nbsp;x=1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp; 
unsigned char x;&nbsp;&nbsp;&nbsp;/* a local 
variable*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;unsigned 
char x;&nbsp;&nbsp;/* a local 
variable*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=3;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORTA=x;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORTA=x;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;PORTA=x;}<BR>}</CODE></P></DIR>
<ADDRESS>Listing 4-12: An example showing the scope of local variables</ADDRESS>
<P><FONT face="Times New Roman,Times">This program declares variables with the 
name <B>x</B>, assigns values to them, and outputs them to PORTA with in such a 
way that, when we consider its output, the scope of its declarations becomes 
clear. When this program runs, it outputs 321. This only makes sense if the 
<B>x</B>declared in the inner most block masks the higher level declarations so 
that it receives the value '3' without destroying the higher level variables. 
Likewise the second <B>x</B>is assigned '2' which it retains throughout the 
execution of the inner most block. Finally, the global <B>x</B>, which is 
assigned '1', is not affected by the execution of the two inner blocks. Notice, 
too, that the placement of the last two <B>PORTA=x;</B> statements demonstrates 
that leaving a block effectively unmasks objects that were hidden by 
declarations in the block. The second<B> PORTA=x; </B>sees the middle 
<B>x</B>and the last <B>PORTA=x;</B> sees the global <B>x</B>.</FONT></P>
<P><FONT face="Times New Roman,Times">This masking of higher level declarations 
is an advantage, since it allows the programmer to declare local variables for 
temporary use without regard for other uses of the same names.</FONT></P>
<P><FONT face="Times New Roman,Times">One of the mistakes a C++ programmer makes 
when writing C code is trying to define local variables in the middle of a 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产.精品.日韩.另类.中文.在线.播放| 日韩av中文字幕一区二区| 欧美不卡激情三级在线观看| 欧美精品一二三| 7777精品伊人久久久大香线蕉| 欧美日韩综合在线| 欧美一级日韩一级| 欧美大片一区二区三区| 欧美一卡在线观看| 欧美一区二区视频在线观看2022| 884aa四虎影成人精品一区| 91麻豆精品国产| 精品区一区二区| 久久久久久久综合狠狠综合| 国产午夜精品福利| 国产精品美女久久久久高潮| 国产精品久久久久aaaa| 亚洲日韩欧美一区二区在线| 玉米视频成人免费看| 水野朝阳av一区二区三区| 蜜臀国产一区二区三区在线播放 | 色婷婷综合久久久中文字幕| 色综合咪咪久久| 56国语精品自产拍在线观看| 精品日韩成人av| 成人欧美一区二区三区白人| 亚洲综合无码一区二区| 免费在线观看日韩欧美| 国内偷窥港台综合视频在线播放| 国产jizzjizz一区二区| 一本高清dvd不卡在线观看| 在线不卡a资源高清| 久久综合九色欧美综合狠狠| 亚洲免费观看视频| 久久国产剧场电影| 99在线精品一区二区三区| 884aa四虎影成人精品一区| 日本一区二区三区在线不卡 | 一本大道久久a久久综合| 欧美伦理电影网| 国产三级三级三级精品8ⅰ区| 亚洲免费色视频| 国产自产2019最新不卡| 欧美亚洲国产一卡| 欧美国产日韩a欧美在线观看| 亚洲午夜三级在线| 福利91精品一区二区三区| 欧美午夜一区二区三区| 国产片一区二区| 日韩电影一二三区| 91色综合久久久久婷婷| 26uuu久久天堂性欧美| 亚洲电影在线免费观看| 91免费版pro下载短视频| 日韩一区二区精品在线观看| 一区二区三区在线观看国产| 盗摄精品av一区二区三区| 欧美一区永久视频免费观看| 亚洲欧美日韩人成在线播放| 成人性视频网站| 久久久噜噜噜久久中文字幕色伊伊| 一区二区三区在线观看欧美| 99精品视频在线免费观看| 日韩一区二区三区三四区视频在线观看| 国产精品电影院| 国产999精品久久| 久久久久久久网| 国产乱码字幕精品高清av| 3atv在线一区二区三区| 偷窥少妇高潮呻吟av久久免费| 91成人免费在线| 亚洲一区电影777| 欧洲av一区二区嗯嗯嗯啊| 亚洲美女免费视频| 色欲综合视频天天天| 一区二区在线电影| 欧美自拍偷拍午夜视频| 亚洲午夜视频在线| 欧美一区二区女人| 麻豆精品国产传媒mv男同| 日韩一区二区中文字幕| 精品一区二区三区香蕉蜜桃| 久久人人超碰精品| 国产精品18久久久久久久久久久久 | 亚洲人123区| 色94色欧美sute亚洲13| 亚洲成av人片一区二区梦乃 | 国产麻豆精品在线观看| 久久人人97超碰com| 成人免费观看av| 亚洲女与黑人做爰| 欧美日韩美女一区二区| 日韩精品成人一区二区在线| 欧美电视剧免费观看| 成+人+亚洲+综合天堂| 一级女性全黄久久生活片免费| 欧美日精品一区视频| 麻豆91免费看| 国产精品网站在线播放| 日本乱人伦一区| 久久国内精品自在自线400部| 久久奇米777| 欧美视频在线观看一区二区| 蜜桃av噜噜一区二区三区小说| 日本一区二区三区国色天香| 欧美亚洲综合久久| 国产在线播精品第三| 亚洲人成网站精品片在线观看| 欧美日韩国产高清一区| 国产精品自产自拍| 亚洲制服欧美中文字幕中文字幕| 欧美v国产在线一区二区三区| 成人午夜视频在线观看| 日本中文在线一区| 国产精品二三区| 欧美α欧美αv大片| 色综合亚洲欧洲| 国产一区中文字幕| 亚洲观看高清完整版在线观看| 欧美成人a∨高清免费观看| caoporm超碰国产精品| 男女男精品视频网| 亚洲视频在线一区| 日韩女同互慰一区二区| 色综合久久久久综合体桃花网| 激情五月婷婷综合| 日韩在线一区二区三区| 亚洲色图在线看| 国产婷婷色一区二区三区| 欧美二区乱c少妇| 色综合久久中文综合久久牛| 福利视频网站一区二区三区| 麻豆精品一二三| 婷婷国产v国产偷v亚洲高清| 亚洲三级在线看| 中文字幕在线不卡一区二区三区| 精品国产一区二区三区忘忧草| 欧美日韩高清在线播放| 色av成人天堂桃色av| www.欧美.com| 国产91丝袜在线播放九色| 蜜臀av一区二区在线观看| 亚洲无线码一区二区三区| 1024国产精品| 亚洲人午夜精品天堂一二香蕉| 久久久国产精华| 国产欧美精品一区二区色综合 | 成人av资源站| 国产一区二区三区高清播放| 美女在线观看视频一区二区| 亚洲444eee在线观看| 亚洲线精品一区二区三区八戒| 亚洲欧美日韩成人高清在线一区| 综合久久综合久久| 亚洲欧美色图小说| 一区二区三区美女视频| 亚洲人成7777| 天天综合日日夜夜精品| 日日骚欧美日韩| 蜜臀久久久99精品久久久久久| 精品一区二区三区久久久| 蜜桃视频一区二区| 狠狠色综合播放一区二区| 国产麻豆一精品一av一免费 | 国产欧美精品在线观看| 中文字幕一区二区三区不卡| 亚洲视频资源在线| 亚洲3atv精品一区二区三区| 日本不卡一二三区黄网| 九九精品视频在线看| 国产jizzjizz一区二区| 91免费看`日韩一区二区| 欧美亚洲禁片免费| 日韩一级黄色大片| 国产精品日韩成人| 亚洲国产aⅴ天堂久久| 精品一区二区三区在线播放| 成人黄页在线观看| 欧美性猛片aaaaaaa做受| 日韩免费在线观看| 亚洲欧美日韩久久精品| 日本三级亚洲精品| eeuss鲁片一区二区三区在线看| 欧美日韩一区二区在线视频| 精品国精品国产尤物美女| 日韩伦理免费电影| 老司机午夜精品| 91麻豆福利精品推荐| 日韩欧美激情一区| 亚洲色图欧洲色图婷婷| 奇米四色…亚洲| 99国产一区二区三精品乱码| 欧美一区二区久久| 国产精品嫩草影院av蜜臀| 日日夜夜精品免费视频| 91在线免费看| 精品国产成人在线影院| 一区二区三区免费| 99久久精品免费看| 久久色在线观看|