日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

bilibili深入理解计算机系统笔记(1):汇编模拟器能跑了

發布時間:2025/4/5 windows 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bilibili深入理解计算机系统笔记(1):汇编模拟器能跑了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 深入理解計算機系統筆記
    • P1筆記
    • p2筆記
    • p3筆記
    • p4筆記
    • 匯編模擬器(p5-7)
        • 封裝訪存接口
        • 輸出計算機狀態
      • 實現指令
        • call指令的實現
    • bug 積累
      • include重復包含的bug
      • 未定義的類型轉換int to uint8_t
      • uint64_t類型printf
    • vs code 快捷鍵記錄
    • makefile
    • gdb調試積累

深入理解計算機系統筆記

視頻鏈接:深入理解計算機系統合集(周更中),作者:yaaangmin

P1筆記

安裝wsl 和在wsl中安裝vscode
[安裝wsl遇到的問題]https://lishizheng.blog.csdn.net/article/details/120549190

[wsl2安裝vscode安裝和配置]https://blog.csdn.net/shizheng_Li/article/details/122342583?spm=1001.2014.3001.5501

p2筆記

命令行編譯c文件格式:

gcc 文件名.c -o 自定義生成的文件名

命令行編譯cpp文件格式:

g++ 文件名.cpp -o 生成的文件名

命令行運行cpp文件格式:

./文件名

具體操作如下:

azheng@lishizheng:/mnt/e/csapp_bilibili$ ls a.out main.cpp azheng@lishizheng:/mnt/e/csapp_bilibili$ g++ main.cpp -o main azheng@lishizheng:/mnt/e/csapp_bilibili$ ./main 1 Hello, world azheng@lishizheng:/mnt/e/csapp_bilibili$

上面先編譯后執行兩句命令,可以合并為編譯執行一起做

g++ main.cpp -o main && ./main

lowbit操作:二進制中取出最后位的1,主要用于樹狀數組(segment array)中

unsigned LowBit(unsigned x) {unsigned a = x & (-x); //等價寫法 unsigned a = x & ((~x) + 1); return a; }

判斷輸入的十六進制數是不是字母(a~f)

對于二進制數:a=x3x2x1x0a = x_3x_2x_1x_0a=x3?x2?x1?x0?, 判斷a是十六進制中字母(a-f)的邏輯表達式為: x3&(x1∣x2)x_3 \& (x_1 | x_2)x3?&(x1?x2?)

// 判斷給定的十六進制數是否為a~f這些字母 // return:每四位判斷一下是否為字母,是的話為1,否則為0 // input:0xab, output: 0x11 // input 0xab123abcd, output: 0x110001111 unsigned Letter(unsigned x) {// 每4位取出對應的x1,x2,x3// x3 x2 x1 x0 -hex// 0 0 1 0 - hex constant - 0x2// 0 0 x1 0 - result of &// 32 / 4 = 8, we need 8 2s -0x22222222unsigned x1 = x & 0x22222222; // 取出每四位的倒數第二位x1unsigned x2 = x & 0x44444444; // 取出每四位的倒數第三位x2unsigned x3 = x & 0x88888888; // 取出每四位的最高位x3//判斷是否為字母的邏輯表達式: x3 * (x1 + x2) <====> x3 & (x1 + x2)return (x3 >> 3) & ((x1 >> 1) | (x2 >> 2)); // a = 0, a = 1; }

p3筆記

浮點數(float)類型

符號位、階碼(E)和尾數(fraction)三部分,共計32位,分別是1 + 8 + 23位。

p4筆記

根據可執行文件,生成匯編代碼的指令(反匯編指令)

objdump -d 文件名 objdump -d main

可輸出如下圖所示的匯編代碼

重定向到某個txt文件,需要使用如下代碼

objdump -d main > main.txt 功能:將main反匯編之后輸出到main.txt文件 code main.txt 功能:用vs code 打開main.txt

補充:vscode隱藏下面輸出面板,快捷鍵是ctrl+jctrl + jctrl+j

進程的內存空間具體劃分

從下往上依次是:程序數據(.data, .bss等),往上依次是堆(malloc),共享庫,用戶棧(user stack),最上面是內核地址空間

匯編模擬器(p5-7)

定義reg結構

模仿下圖的寄存器結構定義reg結構體。

reg寄存器舉例

union // union聯合體,共享低地址內存{struct {uint8_t al;uint8_t ah;};uint16_t ax;uint32_t eax;uint64_t rax; };

具體訪存類型的實現,九種訪存,兩種其他(立即數,寄存器),通過函數

static uint64_t decode_od(od_t od)

操作符,操作數,指令的結構體定義

// 操作符的類型 typedef enum OP {MOV, // 0PUSH, // 1CALL, // 2add_reg_reg // 3 } op_t;// 操作數的類型 typedef struct OD {od_type_t type;int64_t imm;int64_t scal;uint64_t *reg1;uint64_t *reg2;char code[100]; } od_t;// 指令的結構定義 typedef struct INSTRUCT_STRUCT {op_t op; // operatorod_t src; // operandod_t dst; // operand } inst_t;

操作碼譯碼的代碼實現

/*operand decodingimmediate/ register/ memory(9) */ static uint64_t decode_od(od_t od) {if (od.type == IMM){return *(uint64_t *)&od.imm; // &取地址,然后轉換為uint64類型的指針,然后再取該地址的值(*)}else if (od.type == REG){// address in registerreturn (uint64_t)od.reg1; }else{// mmuint64_t vaddr = 0;if (od.type == MM_IMM){vaddr = od.imm;}else if (od.type == MM_REG){// store regvaddr = *(od.reg1);}else if (od.type == MM_IMM_REG){vaddr = od.imm + *(od.reg1);}else if (od.type == MM_REG1_REG2){vaddr = *(od.reg1) + *(od.reg2);}else if (od.type == MM_IMM_REG1_REG2){vaddr = od.imm + *(od.reg1) + *(od.reg2);}else if (od.type == MM_RGE2_S){vaddr = (*(od.reg2)) * od.scal;}else if (od.type == MM_IMM_REG2_S){vaddr = (*(od.reg2)) * od.scal + od.imm;}else if (od.type == MM_REG1_REG2_S){vaddr = *(od.reg1) + (*(od.reg2)) * od.scal;}else if (od.type == MM_IMM_REG1_REG2_S){vaddr = *(od.reg1) + (*(od.reg2)) * od.scal + od.imm;}return va2pa(vaddr); // virtual address => physical address}}

指令周期的實現

while (1) {
從PC指示的存儲器位置取出指令;
執行指令;
更新PC;
}

代碼

// 指令周期 void instruction_cycle() {// 取指令inst_t *instr = (inst_t *)reg.rip; // instruction address// 譯碼(取源操作數,目的操作數)uint64_t src = decode_od(instr->src);uint64_t dst = decode_od(instr->dst);// 根據指令的操作類型,查找函數指針數組,找到函數指針// forexample: add rax rbx 這里,op = add_reg_reg = 3handler_t handler = handler_table[instr->op];// 執行指令handler(src, dst); }

指令從哪里來?來自PC,這里是rip寄存器

然后pc的值在哪里更新?在具體回調函數(handler)里面更新,比如指令mov_reg_reg的handler如下

void mov_reg_reg_handler(uint64_t src, uint64_t dst) {*(uint64_t *)dst = *(uint64_t *)src; // 指令功能reg.rip = reg.rip + sizeof(inst_t); // 更新pc }

簡單的匯編模擬器模擬功能如下圖:只能模擬下圖的15條指令:

(2022年1月9日20點42分更新)匯編指令格式完成15條,具體內容為模擬下圖右側15條匯編指令

結構定義如下

inst_t program[INST_LEN] = {// uint64_t add(uint64_t, uint64_t){push_reg,{ REG, 0, 0, (uint64_t *)&reg.rbp, NULL },{ EMPTY, 0, 0, NULL, NULL },"push \%rbp"},{mov_reg_reg,{ REG, 0, 0, (uint64_t *)&reg.rsp, NULL },{ REG, 0, 0, (uint64_t *)&reg.rbp, NULL },"mov \%rsp,\%rbp"},...// main entry point{mov_reg_reg,{ REG, 0, 0, (uint64_t *)&reg.rdx, NULL },{ REG, 0, 0, (uint64_t *)&reg.rsi, NULL },"mov \%rdx,\%rsi"},{mov_reg_reg,{ REG, 0, 0, (uint64_t *)&reg.rax, NULL },{ REG, 0, 0, (uint64_t *)&reg.rdi, NULL },"mov \%rax,\%rdi"},{call,{ IMM, (uint64_t)&(program[0]), 0, NULL, NULL},{ EMPTY, 0, 0, NULL, NULL},"callq 1129 <add>" // call add函數的地址},{mov_reg_mem,{ REG, 0, 0, (uint64_t *)&reg.rax, NULL },{ MM_IMM_REG, -0x8, 0, (uint64_t *)&reg.rbp, NULL },"mov \%rax,-0x8(\%rbp)" }, }

完成15條匯編指令的定義之后,我們需要完成對具體指令的實現函數

使用gdb調試add函數

azheng@lishizheng:/mnt/e/csapp_bilibili/ass$ gdb add #使用gdb調試add函數(add.c編譯完成的add文件) Type "apropos word" to search for commands related to "word"... Reading symbols from add... (No debugging symbols found in add) (gdb) b main # main函數加斷點 Breakpoint 1 at 0x114e (gdb) run # 執行add函數 Starting program: /mnt/e/csapp_bilibili/ass/addBreakpoint 1, 0x000055555555514e in main () (gdb) disas Dump of assembler code for function main: => 0x000055555555514e <+0>: endbr64 # 正在執行的代碼在這一行0x0000555555555152 <+4>: push %rbp0x0000555555555153 <+5>: mov %rsp,%rbp0x0000555555555156 <+8>: sub $0x20,%rsp0x000055555555515a <+12>: movq $0x12340000,-0x18(%rbp)0x0000555555555162 <+20>: movq $0xabcd,-0x10(%rbp)0x000055555555516a <+28>: mov -0x10(%rbp),%rdx0x000055555555516e <+32>: mov -0x18(%rbp),%rax0x0000555555555172 <+36>: mov %rdx,%rsi0x0000555555555175 <+39>: mov %rax,%rdi0x0000555555555178 <+42>: callq 0x555555555129 <add>0x000055555555517d <+47>: mov %rax,-0x8(%rbp)0x0000555555555181 <+51>: mov $0x0,%eax0x0000555555555186 <+56>: leaveq0x0000555555555187 <+57>: retq End of assembler dump. (gdb) ni 8 # 將執行的代碼向下跳8行 0x0000555555555172 in main () (gdb) disas # 反匯編 Dump of assembler code for function main:0x000055555555514e <+0>: endbr640x0000555555555152 <+4>: push %rbp0x0000555555555153 <+5>: mov %rsp,%rbp0x0000555555555156 <+8>: sub $0x20,%rsp0x000055555555515a <+12>: movq $0x12340000,-0x18(%rbp)0x0000555555555162 <+20>: movq $0xabcd,-0x10(%rbp)0x000055555555516a <+28>: mov -0x10(%rbp),%rdx0x000055555555516e <+32>: mov -0x18(%rbp),%rax => 0x0000555555555172 <+36>: mov %rdx,%rsi # 正在調試的代碼在這一行0x0000555555555175 <+39>: mov %rax,%rdi0x0000555555555178 <+42>: callq 0x555555555129 <add>0x000055555555517d <+47>: mov %rax,-0x8(%rbp)0x0000555555555181 <+51>: mov $0x0,%eax0x0000555555555186 <+56>: leaveq0x0000555555555187 <+57>: retq End of assembler dump.

顯示光標指向mov %rdi, %rsi 時add函數后的各個寄存器的值(狀態機的一個狀態)

(gdb) info r # 寄存器的值 rax 0x12340000 305397760 rbx 0x555555555180 93824992235904 rcx 0x555555555180 93824992235904 rdx 0xabcd 43981 rsi 0x7fffffffe0e8 140737488347368 rdi 0x1 1 rbp 0x7fffffffdff0 0x7fffffffdff0 rsp 0x7fffffffdfd0 0x7fffffffdfd0 r8 0x0 0 r9 0x7ffff7fe0d50 140737354009936 r10 0x7 7 r11 0x2 2 r12 0x555555555040 93824992235584 r13 0x7fffffffe0e0 140737488347360 r14 0x0 0 r15 0x0 0 rip 0x55555555516a 0x55555555516a <main+36> eflags 0x202 [ IF ] cs 0x33 51 ss 0x2b 43 ds 0x0 0 es 0x0 0 fs 0x0 0 gs 0x0 0 (gdb)

(2022年1月10日14點25分更新)

gdb調試過程中的疑問解釋

由于intel是小端機器,所以下面的機器代碼(查看寄存器rsp附近的值)解釋如下:

(gdb) x/10 0x7fffffffdfd0 0x7fffffffdfd0: 0x00000000 0x00000000 0x12340000 0x00000000 0x7fffffffdfe0: 0x0000abcd 0x00000000 0x00000000 0x00000000 0x7fffffffdff0: 0x00000000 0x00000000 (gdb)

首先,每一個0x開頭的是32位二進制數,對于64位數值,兩個0x組成一個數值,以0x123400000x000000000x12340000 \quad 0x000000000x123400000x00000000兩個0x為例,解釋小端機器。所謂小端機,就是低地址在前,高地址在后。即0x12340000是低位數,而0x00000000是高位數。所以這個數值為

0x0000000012340000 而不是 0x1234000000000000(這是大端機:高地址在前,低地址在后)

兩個寄存器rbp和rsp標志著該函數占用堆棧的起始地址和結束地址,由于堆棧是向下增長的,所以起始rbp要大于結束rsp

rbp 0x7fffffffdff0 0x7fffffffdff0 rsp 0x7fffffffdfd0 0x7fffffffdfd0

當執行完mov %rax,-0x8(%rbp)之后各個寄存器的值(狀態機的另一個狀態)

(gdb) ni 4 # 向下執行4行 0x0000555555555179 in main () (gdb) disas Dump of assembler code for function main:0x0000555555555146 <+0>: endbr640x000055555555514a <+4>: push %rbp0x000055555555514b <+5>: mov %rsp,%rbp0x000055555555514e <+8>: sub $0x20,%rsp0x0000555555555152 <+12>: movq $0x12340000,-0x18(%rbp)0x000055555555515a <+20>: movq $0xabcd,-0x10(%rbp)0x0000555555555162 <+28>: mov -0x10(%rbp),%rdx0x0000555555555166 <+32>: mov -0x18(%rbp),%rax0x000055555555516a <+36>: mov %rdx,%rsi0x000055555555516d <+39>: mov %rax,%rdi0x0000555555555170 <+42>: callq 0x555555555129 <add>0x0000555555555175 <+47>: mov %rax,-0x8(%rbp) => 0x0000555555555179 <+51>: mov $0x0,%eax0x000055555555517e <+56>: leaveq0x000055555555517f <+57>: retq End of assembler dump. (gdb) info r # 顯示各個寄存器的值 rax 0x1234abcd 305441741 rbx 0x555555555180 93824992235904 rcx 0x555555555180 93824992235904 rdx 0x12340000 305397760 rsi 0xabcd 43981 rdi 0x12340000 305397760 rbp 0x7fffffffdff0 0x7fffffffdff0 rsp 0x7fffffffdfd0 0x7fffffffdfd0 r8 0x0 0 r9 0x7ffff7fe0d50 140737354009936 r10 0x7 7 r11 0x2 2 r12 0x555555555040 93824992235584 r13 0x7fffffffe0e0 140737488347360 r14 0x0 0 r15 0x0 0 rip 0x555555555179 0x555555555179 <main+51> eflags 0x202 [ IF ] cs 0x33 51 ss 0x2b 43 ds 0x0 0 es 0x0 0 fs 0x0 0 gs 0x0 0 (gdb)

執行完add函數之后,校驗內存(棧頂指針rsp附近的值)

(gdb) x/10 0x7fffffffdfd0 0x7fffffffdfd0: 0x00000000 0x00000000 0x12340000 0x00000000 0x7fffffffdfe0: 0x0000abcd 0x00000000 0x1234abcd 0x00000000 0x7fffffffdff0: 0x00000000 0x00000000 (gdb)add運行前內存(棧頂指針rsp附近的值) (gdb) x/10 0x7fffffffdfd0 0x7fffffffdfd0: 0x00000000 0x00000000 0x12340000 0x00000000 0x7fffffffdfe0: 0x0000abcd 0x00000000 0x00000000 0x00000000 0x7fffffffdff0: 0x00000000 0x00000000

封裝訪存接口

使用指針訪存是一件很危險的事情,所以需要把對內存的操作封裝起來,形成定義好的、安全的接口,統一使用。

同時這里學習了flighting 的使用,即定義一個宏,來判斷某項功能是否啟用。這里定義宏SRAM_CACHE_SETTING來判斷cache是否啟用,為后續程序擴展帶來了方便。

// flighting標志 #define SRAM_CACHE_SETTING 0 // 是否使用cacheuint64_t read64bits_dram(uint64_t paddr) {if (SRAM_CACHE_SETTING == 1){return 0x0;}uint64_t val = 0x0;val += ((uint64_t)mm[paddr + 0]) << 0;val += ((uint64_t)mm[paddr + 1]) << 8;val += ((uint64_t)mm[paddr + 2]) << 16;val += ((uint64_t)mm[paddr + 3]) << 24;val += ((uint64_t)mm[paddr + 4]) << 32;val += ((uint64_t)mm[paddr + 5]) << 40;val += ((uint64_t)mm[paddr + 6]) << 48;val += ((uint64_t)mm[paddr + 7]) << 56;return val; }void write64bits_dram(uint64_t paddr, uint64_t data) {if (SRAM_CACHE_SETTING == 1){return;}// 將64bits的數據拆分,每8bits寫入一個單元// mm[index] 是uint8_t類型mm[paddr + 0] = (data >> 0) & 0xff; // mask 取8位mm[paddr + 1] = (data >> 8) & 0xff; mm[paddr + 2] = (data >> 16) & 0xff; mm[paddr + 3] = (data >> 24) & 0xff; mm[paddr + 4] = (data >> 32) & 0xff; mm[paddr + 5] = (data >> 40) & 0xff; mm[paddr + 6] = (data >> 48) & 0xff; mm[paddr + 7] = (data >> 56) & 0xff; }

輸出計算機狀態

兩個函數print_register和print_stack,用于輸出寄存器和堆棧的值,輔助debug。

// 輸出寄存器狀態 void print_register(); // 輸出堆棧rsp上下各n(=10)個單元的狀態 void print_stack();void print_register() {printf("rax = %16lx\trbx = %16lx\trcx = %16lx\trdx = %16lx\n",reg.rax, reg.rbx, reg.rcx, reg.rdx);printf("rsi = %16lx\trdi = %16lx\trbp = %16lx\trsp = %16lx\n",reg.rsi, reg.rdi, reg.rbp, reg.rsp);printf("rip = %16lx\n", reg.rip); }void print_stack() {int n = 10;uint64_t *high = (uint64_t *)&mm[va2pa(reg.rsp)]; // 棧頂(物理地址) high = &high[n];// 變量rsp_stack:虛擬地址indexinguint64_t rsp_start = reg.rsp + n * 8; // 棧底(高地址):從rsp往上10條指令for (int i = 0; i < 2 * n; i ++) // 從高地址10,到低地址-10位{uint64_t *ptr = (uint64_t *)(high - i);printf("0x%016lx : %16lx", rsp_start, (uint64_t)*ptr);if (i == n){printf(" <== rsp");}rsp_start = rsp_start - 8; // 每次8bytes更新stack的indexingprintf("\n");} }

實現指令

call指令的實現

call指令的實現

主要是兩個寄存器的值rip 和rsp,它們的功能如下:rip存有指令的地址,rsp為棧頂指針.

子程序調用(call)的具體步驟:

  • call指令執行時,堆棧先要向下擴展一格:rsp - 8byte。

  • 返回地址(return address):rsp會更新為下一條指令的地址:rsp = rip + sizeof(inst_t);。

  • rip更新為子程序的地址,等待被調用。

  • 當call(調用子程序)完成后,會根據返回地址rip跳轉到原程序的call指令的下一條指令繼續執行。

代碼實現

// call指令的模擬實現 void call_handler(uint64_t src, uint64_t dst) {// src: imm - address of called function// [1] 棧頂先下移一格reg.rsp = reg.rsp - 8; // [2] write return address to rsp memory(返回地址寫入棧頂rsp)write64bits_dram(va2pa(reg.rsp),reg.rip + sizeof(inst_t) //return address: next instruction );// [3] put address of callee to rip,waiting to execute(子程序的地址寫入rip,等待執行)reg.rip = src; } // 將data寫入物理內存paddr中 /* void write64bits_dram(uint64_t paddr, uint64_t data); */

圖示對上述過程的解釋:

上圖a中rip = 0x400563的值時當前指令call的地址,圖b中棧頂值rip = 0x400568這是 return address(執行完call調用的函數之后,從該地址繼續執行)。從這兩個rip的數值我們可以看出x86架構的call指令占5B(兩個rip的值作差得到)。圖b中rip的值為call的子函數的入口地址。

bug 積累

include重復包含的bug

In file included from ./src/disk/code.c:3: ./src/memory/instruction.h:33:5: note: previous definition of ‘MM_IMM_REG1_REG2_S’ was here33 | MM_IMM_REG1_REG2_S| ^~~~~~~~~~~~~~~~~~ In file included from ./src/disk/elf.h:4,from ./src/disk/code.c:4: ./src/memory/instruction.h:37:16: error: redefinition of ‘struct OD’37 | typedef struct OD| ^~ In file included from ./src/disk/code.c:3: ./src/memory/instruction.h:37:16: note: originally defined here37 | typedef struct OD| ^~ In file included from ./src/disk/elf.h:4,from ./src/disk/code.c:4: ./src/memory/instruction.h:44:3: error: conflicting types for ‘od_t’44 | } od_t;

解決辦法是使用include guard,類似于設計模式里面的單例模式。

//mmu.h // include guard#ifndef mmu_guard // 如果宏mmm_guard 沒有被定義,則往下執行,如果宏mmm_guard被定義了,則跳轉到#endif#define mmu_guard// memory management unit #include <stdint.h>uint64_t va2pa(uint64_t vaddr);#endif

未定義的類型轉換int to uint8_t

azheng@lishizheng:/mnt/e/csapp_bilibili/ass$ make main /usr/bin/gcc-9 -Wall -g -O2 -Werror -std=gnu99 -I./src ./src/memory/instruction.c ./src/cpu/mmu.c ./src/disk/code.c ./src/memory/dram.h ./src/main.c -o program ./src/main.c: In function ‘main’: ./src/main.c:28:33: error: unsigned conversion from ‘int’ to ‘uint8_t’ {aka ‘unsigned char’} changes value from ‘43981’ to ‘205’ [-Werror=overflow]28 | mm[va2pa(0x7fffffffdfe0)] = 0x0000abcd;| ^~~~~~~~~~ ./src/main.c:29:33: error: unsigned conversion from ‘int’ to ‘uint8_t’ {aka ‘unsigned char’} changes value from ‘305397760’ to ‘0’ [-Werror=overflow]29 | mm[va2pa(0x7fffffffdfd8)] = 0x12340000;| ^~~~~~~~~~ cc1: all warnings being treated as errors make: *** [makefile:12: main] Error 1

uint64_t類型printf

azheng@lishizheng:/mnt/e/csapp_bilibili/ass$ make main /usr/bin/gcc-9 -Wall -g -O2 -Werror -std=gnu99 -I./src ./src/memory/instruction.c ./src/cpu/mmu.c ./src/disk/code.c ./src/memory/dram.c ./src/main.c -o program ./src/main.c: In function ‘main’: ./src/main.c:34:16: error: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘uint64_t’ {aka ‘long unsigned int’} [-Werror=format=]34 | printf("%16x\n",| ~~~^| || unsigned int| %16lx35 | *(uint64_t *)&mm[pa]);| ~~~~~~~~~~~~~~~~~~~~| || uint64_t {aka long unsigned int} cc1: all warnings being treated as errors make: *** [makefile:12: main] Error 1

uint64_t 是long unsigned int,用printf需要控制符%l,以十六進制形式輸出%lx

vs code 快捷鍵記錄

復制某一行: alt + shift + 向下的箭頭

代碼格式化:alt + shift + F

makefile

快速編譯

makefile文件內容

CC = /usr/bin/gcc-9 CFLAGS = -Wall -g -O2 -Werror -std=gnu99EXE = programSRC = ./src CODE = ./src/memory/instruction.c ./src/cpu/mmu.c ./src/disk/code.c ./src/memory/dram.c ./src/main.c.PHONY: program main:$(CC) $(CFLAGS) -I$(SRC) $(CODE) -o $(EXE)run:./$(EXE)

gcc編譯選項

圖片來源:https://blog.csdn.net/Ivan804638781/article/details/111996770

編譯main文件

make main

運行文件

make run

gdb調試積累

目前使用gdb調試的步驟(2022年1月9日更新)

  • gdb調試add函數
  • gdb add
  • 對main函數加斷點
  • b main
  • 運行待調試的函數
  • run
  • 反匯編main函數
  • disas
  • 退出gdb
  • quit

    上述序號代表執行順序。

    examine(簡寫為x)可以用來查看內存地址中的值

    x/[n][f][u] address

    其中:

    • n表示要顯示的內存單元個數,默認值是1
    • f表示要打印的格式
    • u表示要打印的單元長度
    • address表示內存單元地址

    舉例,打印10個內存單元

    x/10 address

    總結

    以上是生活随笔為你收集整理的bilibili深入理解计算机系统笔记(1):汇编模拟器能跑了的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    999久久a精品合区久久久 | 国产精品午夜在线 | 中文字幕在线看视频国产中文版 | 免费午夜视频在线观看 | 精品国产91亚洲一区二区三区www | 99tvdz@gmail.com| 日日干日日色 | 久久网页 | 国产999在线观看 | 精品日韩在线一区 | 日韩黄色在线观看 | 久久免费视频在线观看30 | 综合色狠狠 | 网站免费黄色 | 亚洲成人av片| 91热视频在线观看 | 精品色999 | 综合精品在线 | 久草在线视频在线观看 | 国产中文在线播放 | 国产资源在线播放 | 成人免费视频在线观看 | 四虎8848免费高清在线观看 | 久草国产视频 | 99久久影院 | 国产亚洲成av片在线观看 | 91成人免费看片 | 国产精品免费看久久久8精臀av | 777xxx欧美 | 91av综合| av一级在线观看 | 国产黄色片一级 | 精品一区 精品二区 | 成 人 黄 色 视频播放1 | 五月婷视频| 69精品人人人人 | 欧美日韩中文视频 | 成人av中文字幕在线观看 | 在线观看午夜 | 国产精品久久久久永久免费看 | 国产日产av | 婷婷播播网 | 在线中文字幕一区二区 | 国产色综合 | 亚洲亚洲精品在线观看 | 久久久久国产成人免费精品免费 | www.香蕉视频在线观看 | 国产精品久久久久久久久久久久午夜片 | 国产伦理久久精品久久久久_ | 亚洲一区二区视频 | 999精品网| 亚洲一区不卡视频 | 欧美日韩高清在线观看 | 久九视频 | 亚洲精品国产精品国自 | 伊人久久av | 能在线看的av | 97香蕉久久国产在线观看 | 伊人狠狠| 婷婷精品视频 | 在线视频欧美精品 | av资源免费在线观看 | 福利视频网站 | 久久免费av | 麻豆94tv免费版 | 日韩区欧美久久久无人区 | 国产中文字幕在线看 | 日韩小视频网站 | 色婷婷狠狠五月综合天色拍 | 在线看一级片 | 开心色婷婷| 国产精品久久99综合免费观看尤物 | 日韩啪啪小视频 | 九九免费观看全部免费视频 | 亚洲激情影院 | 精品久久久久_ | 成人四虎| 久久精品中文字幕 | 亚洲国产视频a | 天天天综合 | 亚洲精品www久久久久久 | 黄色av网站在线观看免费 | 精品久久网站 | 中中文字幕av在线 | 99视屏 | 亚洲欧美一区二区三区孕妇写真 | 久久蜜臀一区二区三区av | www,黄视频| 草免费视频 | 中文字幕av免费在线观看 | 欧美日韩在线视频一区二区 | 99热亚洲精品 | 成人国产精品入口 | 日本在线观看一区二区 | 久久精品日本啪啪涩涩 | 免费能看的黄色片 | 99午夜| 久久经典国产视频 | 中文字幕在线视频一区 | 91成人精品 | 美女又爽又黄 | 丁香六月婷婷开心 | 国产三级午夜理伦三级 | 99久久国产免费免费 | 九九在线视频免费观看 | 九九在线高清精品视频 | av在线影视| 国产日韩欧美在线一区 | 国产精品嫩草影院123 | 久久精品一区二区三区四区 | 久久视频精品在线观看 | 久久国产精品影片 | 在线观看av免费 | 色就色,综合激情 | 成人a级网站 | 中文字幕av全部资源www中文字幕在线观看 | bbbbb女女女女女bbbbb国产 | 91在线在线观看 | 丁香激情综合久久伊人久久 | 看av在线 | 国产精品久久99精品毛片三a | 成人全视频免费观看在线看 | 东方av免费在线观看 | 亚洲精品伦理在线 | 国产在线视频在线观看 | 天天干天天摸 | 中文字幕在线观看完整版电影 | 97国产大学生情侣酒店的特点 | 久久国产精品久久国产精品 | 国产又粗又猛又色又黄视频 | wwwwwww色| 香蕉精品视频在线观看 | 丁香婷婷自拍 | 久久婷婷一区二区三区 | 精品福利视频在线观看 | 日韩免费在线视频观看 | 国产剧情一区二区在线观看 | 超碰97在线看 | 伊人影院99 | 色网站视频 | 日本三级全黄少妇三2023 | 久草97| 日日夜夜操av | 久久成人一区二区 | 亚洲国产97在线精品一区 | 亚洲精品久久激情国产片 | 国产99久| 成人羞羞免费 | 91在线小视频 | 中文字幕在线观看你懂的 | 日日干,天天干 | 成人精品视频 | 免费看的毛片 | 精品二区视频 | 婷婷丁香七月 | 婷婷在线精品视频 | 久久亚洲私人国产精品va | 免费国产在线精品 | 91九色在线播放 | 精品婷婷| 正在播放一区二区 | 丁香网婷婷 | 久久久久亚洲精品男人的天堂 | 国产精品久久久区三区天天噜 | 狠狠狠色丁香婷婷综合激情 | 久久草视频 | 国产a国产a国产a | 日韩视| 精品视频在线看 | 久久伊人色综合 | 国产亚洲精品日韩在线tv黄 | 最近日本mv字幕免费观看 | 国产精品日韩欧美 | 国产青青青 | 国产又黄又爽又猛视频日本 | 在线一区av | 在线视频 精品 | 蜜臀久久99精品久久久久久网站 | 狠狠色噜噜狠狠 | 亚洲伊人天堂 | 精品xxx| 国产亚洲精品av | 久久久久国产成人免费精品免费 | 欧美一级视频免费 | 精品国产美女 | 日本久久久亚洲精品 | 国产欧美精品一区二区三区 | 国产精品18久久久久久久 | 黄色小说在线观看视频 | 在线观看黄a| 91精品久久久久久久久久入口 | 欧美激情片在线观看 | 精品黄色片 | 日本一区二区三区视频在线播放 | 视频福利在线观看 | 日韩videos高潮hd | 天天综合久久 | 国产情侣一区 | 在线看一区 | 日韩一区二区三 | 亚洲国产成人在线观看 | 亚洲精品国产精品国自产观看 | 色a在线观看 | 欧美在线视频第一页 | 久久久久97国产 | 婷婷久久精品 | 黄色一级在线视频 | 国内一级片在线观看 | 天天操天天操天天操天天操天天操天天操 | 国产在线更新 | 国产精品美乳一区二区免费 | 日韩一区二区三区在线观看 | 麻花豆传媒一二三产区 | 女人18毛片a级毛片一区二区 | 久久黄页 | 很污的网站| 国产精品日韩欧美一区二区 | 欧美婷婷综合 | 天天曰天天曰 | 国产特级毛片aaaaaaa高清 | 天天激情| 日韩视频1区 | 欧美极度另类性三渗透 | 少妇bbbb揉bbbb日本 | 在线观看亚洲精品视频 | 欧美狠狠色 | 欧美性色网站 | www久久 | 久在线 | 四虎海外影库www4hu | 一区二区欧美日韩 | 欧美日韩一二三四区 | 中文字幕在线观看免费高清完整版 | 五月天伊人网 | 成人黄色一级视频 | 成人av在线网址 | 中文字幕在线看视频国产中文版 | 黄色1级毛片 | 欧美性天天| 亚洲人视频在线 | 人人精品| 免费在线成人av电影 | 91精品在线免费视频 | 青青草国产成人99久久 | 免费看黄色小说的网站 | 深夜福利视频在线观看 | 欧美在线观看视频 | 精品a在线 | 激情欧美一区二区三区 | 国产午夜精品福利视频 | 日日摸日日爽 | 97在线影院| 久久久亚洲国产精品麻豆综合天堂 | 精品v亚洲v欧美v高清v | 少妇bbr搡bbb搡bbb | 九九99 | 五月婷婷欧美视频 | 精品一区二区三区电影 | 成人av在线亚洲 | 亚洲国产影院 | 久久久久久久亚洲精品 | 日韩欧美一区二区三区黑寡妇 | 国产xxxx| 99精品视频免费在线观看 | 人人插人人射 | 天天爱天天操天天射 | 久青草影院 | 一级黄色视屏 | 免费日韩一区二区三区 | 91视频在线观看下载 | 一区二区视 | 色婷婷综合在线 | 黄a网站| 成人a免费看 | 久久一区二区三区超碰国产精品 | 亚洲国产免费网站 | 黄色片免费在线 | 91夫妻自拍| 91视频在线观看大全 | 国产精品嫩草影院9 | 国产资源网 | 日韩av成人在线 | 四虎在线观看精品视频 | 99亚洲天堂 | 婷婷激情小说网 | 国产91aaa| 亚洲激情综合 | 91精品黄色| 欧美另类v | 免费在线观看污网站 | 美女一级毛片视频 | 亚洲欧洲精品在线 | 99性视频 | 中文字幕在线观看免费 | 免费亚洲成人 | 成年人在线观看网站 | 免费网站色| 国产一区二区三精品久久久无广告 | 2019国产精品 | 美女天天操 | 91福利视频网站 | 国产精品电影一区 | www.神马久久 | 999久久久久久 | 天天爱天天操 | 国产剧情一区二区在线观看 | 日韩av一卡二卡三卡 | 在线观看一区 | 久久tv视频 | 国产精品毛片一区二区 | 日韩在线观看第一页 | 久久国产视频网站 | 亚洲人成综合 | 婷婷丁香激情 | 国产免费叼嘿网站免费 | 精品久久一级片 | 中文字幕在线资源 | 欧美天天综合网 | 99色亚洲| 国产成人精品国内自产拍免费看 | 亚洲日本在线一区 | 国产九九热 | www.日韩免费 | 黄色片亚洲 | 欧美精品亚洲精品日韩精品 | 狠狠干夜夜操天天爽 | 高清不卡毛片 | 91精品电影 | 中文字幕视频播放 | 九九久久久久久久久激情 | 一区在线免费观看 | 久久精品艹 | 国产精品久久久久久久久搜平片 | 久草在线99 | 69国产盗摄一区二区三区五区 | 色婷婷97| 亚洲男人天堂a | 亚洲国产精品500在线观看 | 亚洲性少妇性猛交wwww乱大交 | 国产精品1区2区3区 久久免费视频7 | 国产精品自拍在线 | 日本在线观看一区二区三区 | www.狠狠干 | 青青河边草免费观看 | 91免费高清在线观看 | 久久久久久久久久伊人 | 玖玖视频国产 | 手机色在线 | 久久久av免费| 日本黄色免费观看 | 欧美日韩三级在线观看 | 激情欧美日韩一区二区 | 在线观看视频福利 | 五月天久久精品 | 久久久精品免费观看 | 免费在线观看av网站 | 狠狠狠狠狠色综合 | 中文字幕久久亚洲 | 欧洲精品亚洲精品 | 国产偷v国产偷∨精品视频 在线草 | 欧美视频不卡 | 91视频麻豆视频 | 国产精品第7页 | 极品国产91在线网站 | 亚洲在线国产 | 97视频在线观看播放 | 久久综合激情 | 久久成人精品电影 | 亚洲精品视频一二三 | 中文字幕欧美三区 | 91av手机在线 | av黄色在线 | 视频在线观看99 | 日韩在线三区 | 美女黄频在线观看 | 中文字幕在线看视频国产中文版 | 久久久不卡影院 | 久久久久久久国产精品影院 | 深夜成人av | 成人免费xyz网站 | 激情久久伊人 | 日韩免费在线视频观看 | 婷婷在线免费 | 激情五月婷婷综合 | 91精品国产自产老师啪 | 日韩欧美在线视频一区二区三区 | 91成品人影院| 国产一区二区在线影院 | 久久久综合香蕉尹人综合网 | 国产精品99免费看 | 久久短视频 | 久久av影院| 丁香激情五月 | 在线免费黄色 | 九草视频在线 | 国产午夜三级一二三区 | 国产精品乱看 | 狠狠干狠狠色 | 亚洲三级在线免费观看 | 成年人在线免费视频观看 | 天天爱天天爽 | 日韩高清 一区 | 99精品国产福利在线观看免费 | 欧美日韩视频在线 | 国产精品免费一区二区 | 欧美亚洲一级片 | 99久久日韩精品免费热麻豆美女 | 日韩视频中文字幕在线观看 | 中文字幕免费观看全部电影 | 9热精品| a黄色一级 | 久久免费福利 | 日韩中文字幕在线观看 | 欧美在线观看视频一区二区 | 国产手机在线视频 | 国产又粗又长的视频 | 久草精品视频 | 久久人人爽人人爽人人片av软件 | 日韩精品一区二区三区在线视频 | 九九视频在线观看视频6 | 国产r级在线观看 | 97人人视频 | 久草视频在线免费播放 | 天天av资源 | 992tv在线成人免费观看 | 超碰97国产精品人人cao | 九色免费视频 | av在线进入| 国产精品6 | 国产小视频免费观看 | 精品久久一区二区 | 夜夜视频欧洲 | 欧美超碰在线 | 久久人人爽人人爽人人片av软件 | 欧美成人一二区 | 狠狠色丁婷婷日日 | 91综合久久一区二区 | 最近中文字幕免费观看 | 久久任你操 | 91精品视频播放 | 精品视频免费 | 天天色影院 | 91福利社在线观看 | 一区二区国产精品 | 国产福利免费在线观看 | 国产精品久久久久毛片大屁完整版 | 依人成人综合网 | a成人v| 韩国av一区 | 免费久久网站 | 欧美日韩18| 国产系列 在线观看 | 一级性视频| 插插插色综合 | 国产亚洲免费的视频看 | 欧美另类成人 | 国产伦精品一区二区三区高清 | 99精品视频中文字幕 | 波多野结衣电影一区 | 国产亚洲精品v | 狠狠狠的干| 黄影院| 91传媒视频在线观看 | 国产精品18久久久久久首页狼 | 91免费网站在线观看 | 六月色| 成人黄性视频 | 视频一区二区三区视频 | 欧美一级片在线观看视频 | 婷婷国产v亚洲v欧美久久 | 精品女同一区二区三区在线观看 | 91精品国产综合久久久久久久 | 国产馆在线播放 | 九九九九热精品免费视频点播观看 | 成人理论电影 | 精品自拍av | 欧美日韩在线视频一区二区 | 欧美性大战久久久久 | www.夜夜爱 | 丁香久久综合 | 国产成人一区二区在线观看 | 黄色网址国产 | 国产精品高清在线观看 | 欧美一级高清片 | 成人h视频 | 天堂v中文 | 成人在线视频观看 | 日韩免费在线观看视频 | 啪啪免费试看 | 成人在线一区二区三区 | 91视频在线免费 | 精品国产欧美一区二区 | 最近2019中文免费高清视频观看www99 | 丁香婷婷久久久综合精品国产 | 日日干网 | 日本公妇在线观看高清 | 久久久久综合视频 | 日操干 | 五月婷婷综合在线观看 | 免费午夜av | 欧美成人h版在线观看 | 国产精品婷婷午夜在线观看 | 美女久久久 | 香蕉视频一级 | 国产麻豆精品久久一二三 | 欧美日韩一区二区在线观看 | av大全在线观看 | 国产在线探花 | 成年人免费在线看 | 精品麻豆入口免费 | 日韩在线电影一区 | 色综合久久88色综合天天人守婷 | 九热在线 | 在线观看日韩 | 天天舔天天搞 | 日韩高清一区 | 免费男女羞羞的视频网站中文字幕 | 日本久久高清视频 | 人人要人人澡人人爽人人dvd | 91精品国产欧美一区二区 | 色片网站在线观看 | 成人福利在线观看 | 国产一级大片免费看 | 天海翼一区二区三区免费 | 超碰99在线| 97超碰人人澡人人爱 | 成人av日韩 | 欧美精品一区二区在线观看 | 久久综合成人 | 五月婷婷激情五月 | 国产精品自拍在线 | 精品久久美女 | 久久99精品国产91久久来源 | 亚洲国产精品va在线看黑人动漫 | 日韩精品三区四区 | 在线电影播放 | 国产精品24小时在线观看 | 最新中文字幕在线资源 | 波多野结衣在线观看一区二区三区 | 中文在线www| 国产亚洲片 | 亚洲精品高清一区二区三区四区 | 精品国产区在线 | 日韩午夜电影网 | 亚洲黄色片 | 五月婷婷中文网 | 日韩成人在线一区二区 | 怡红院av| 最近最新中文字幕视频 | 一区二区三区国 | 天堂av高清 | 久久久精品日本 | 成人资源在线观看 | 人人看人人 | 欧洲精品二区 | 1000部国产精品成人观看 | 日日夜夜狠狠操 | 日日干夜夜操视频 | 91福利视频免费观看 | 久草精品在线观看 | 日韩一区二区久久 | 91在线中文字幕 | 成人免费大片黄在线播放 | 一本一本久久aa综合精品 | 胖bbbb搡bbbb擦bbbb| 五月婷婷六月丁香激情 | 久草在线视频免费资源观看 | 三级在线视频播放 | 精品国偷自产在线 | 国产免费久久精品 | 日韩欧美国产成人 | 欧美韩国在线 | 欧美动漫一区二区三区 | 久久久久亚洲天堂 | 亚洲人精品午夜 | 亚洲精品视频在线免费播放 | 成人高清av在线 | 久久黄色片子 | 国产精品青草综合久久久久99 | 极品久久久久 | 女人高潮特级毛片 | 日韩精品亚洲专区在线观看 | 四虎5151久久欧美毛片 | 99久久久久久久久久 | 一级α片免费看 | 亚州免费视频 | 成人午夜在线观看 | 欧美日韩三级 | 激情丁香久久 | 狠狠狠狠狠狠天天爱 | 91久久奴性调教 | 久久久久久久久久久福利 | 日日麻批40分钟视频免费观看 | 国产成人精品久久亚洲高清不卡 | 国产精彩在线视频 | 欧美激情精品久久久久久变态 | 激情五月婷婷综合 | 国产色视频网站 | 国产欧美最新羞羞视频在线观看 | 亚洲免费视频观看 | 99久久夜色精品国产亚洲96 | 一二区电影 | 毛片网站在线观看 | 99亚洲精品视频 | 97影视 | 国产一性一爱一乱一交 | 久久99最新地址 | 丁香五婷 | 国产五十路毛片 | av成人免费网站 | 伊甸园av在线 | 操操综合网| 国产精品久久99综合免费观看尤物 | 天堂网中文在线 | 国产成人av在线 | 久久视频一区二区 | 日本高清中文字幕有码在线 | www.人人干| 99热这里只有精品免费 | 91在线国内视频 | 亚洲综合成人婷婷小说 | 人人澡超碰碰97碰碰碰软件 | 麻豆影视在线播放 | 日韩精品免费一区二区在线观看 | 亚洲精品乱码久久久久久蜜桃动漫 | 五月婷色 | 免费在线观看av电影 | 亚洲国产精品成人精品 | 免费看黄的视频 | 国产探花在线看 | 久热免费在线观看 | 一级欧美一级日韩 | 日韩在线观看影院 | 日日草夜夜操 | 三级av网 | 中中文字幕av在线 | 国产精品黄色在线观看 | 国产精品一区二区62 | 在线视频日韩一区 | 亚洲精品成人 | 国产黄大片 | 中文在线免费观看 | 五月天综合在线 | av怡红院 | 亚洲国产精品第一区二区 | 中文字幕第一页在线播放 | 久久99久久久久 | 中文字幕在线播放av | 91探花国产综合在线精品 | 六月丁香激情网 | 欧美一级日韩三级 | 亚洲天堂网在线视频观看 | 黄网站大全 | 亚洲国产欧美在线人成大黄瓜 | 婷婷久草 | 能在线看的av | 国产精品女人久久久 | 91丨porny丨九色 | 国产精品综合在线 | 国产精品一区二区 91 | 五月天天天操 | 日韩中文字幕免费在线观看 | 一区二区理论片 | 国产精品乱码久久久久久1区2区 | 亚州成人av在线 | 亚洲在线观看av | 97成人精品区在线播放 | 日本精品视频在线观看 | 中文字幕在线观看免费 | 美女黄频在线观看 | 国产精品www | 国产手机在线精品 | 国产精品破处视频 | 天天在线免费视频 | 97成人在线免费视频 | 国产免费久久 | 成年人视频在线观看免费 | 国产精品18久久久久久首页狼 | 激情综合网天天干 | av网站地址 | 在线观看视频国产 | 国产午夜精品久久久久久久久久 | 欧美日韩视频 | 69热国产视频 | 国产精品成人国产乱一区 | 97国产精品亚洲精品 | www日| 日韩免费不卡av | 亚洲成色777777在线观看影院 | 精品欧美一区二区三区久久久 | 中文字幕亚洲精品在线观看 | 成人免费视频a | 久久久久久网站 | 久久国产精彩视频 | 成人精品99 | 蜜臀av在线一区二区三区 | 99视频一区 | 国产精品短视频 | 久久99国产精品二区护士 | 99久久精品免费看 | 亚洲精品视频在线免费 | 久 久久影院 | 亚洲天堂精品视频在线观看 | av无限看| 久久精品视频4 | 最新国产中文字幕 | 国产亚洲精品久久久久久久久久 | 九九在线高清精品视频 | 免费观看www视频 | 久久久精品一区二区三区 | www.av免费观看 | 色婷婷激情四射 | 日韩高清久久 | 国产91亚洲 | 亚洲精品高清一区二区三区四区 | 99这里只有精品视频 | 日韩一级黄色片 | 亚洲黄色免费 | 欧美色图另类 | 色在线视频网 | 久久9999久久免费精品国产 | 99精品免费久久久久久久久 | 国产伦理久久精品久久久久_ | 国产一区二区综合 | 黄色网在线播放 | 热久久免费国产视频 | 亚洲精品短视频 | 91漂亮少妇露脸在线播放 | 久久精品综合视频 | 欧美黄污视频 | 五月婷婷久久综合 | 日本精品一区二区在线观看 | 欧美在线视频一区二区 | 亚洲国产欧美一区二区三区丁香婷 | 久久综合福利 | 人人干人人爽 | 国产九九九精品视频 | 亚洲精品 在线视频 | 少妇高潮流白浆在线观看 | 久久99精品久久久久婷婷 | 国产美女精品视频免费观看 | 欧美日韩在线免费观看视频 | 欧美日韩免费一区二区三区 | 欧美巨大荫蒂茸毛毛人妖 | 日本中文字幕在线视频 | 日韩av一区二区三区 | 最近中文字幕国语免费av | 97视频免费观看2区 亚洲视屏 | 国产亚洲精品成人av久久影院 | 久久视频在线观看中文字幕 | 91在线观看黄 | 色多多视频在线观看 | 国产精品免费观看久久 | 日韩在线第一 | 国产97在线观看 | 亚洲伦理一区二区 | av大全在线 | 日韩区欠美精品av视频 | 国产精品一区免费观看 | 久久蜜臀一区二区三区av | 97碰碰精品嫩模在线播放 | 麻豆精品传媒视频 | 国产成人在线看 | 成人黄色在线电影 | 欧洲av在线 | 最新国产在线观看 | 女人魂免费观看 | 少妇精69xxtheporn| 亚洲视频一级 | 久久成人午夜视频 | 欧美日韩国产区 | 97操操操| 精选久久| 一区二区三区观看 | 五月婷婷中文网 | 国产一区二区久久精品 | 五月天婷亚洲天综合网精品偷 | 国产美女永久免费 | 久久狠狠亚洲综合 | 成人全视频免费观看在线看 | 黄免费在线观看 | 精精国产xxxx视频在线播放 | 久久99久久99精品免观看软件 | 日韩av三区| 日韩动态视频 | 国产一区福利 | 国产精品国产亚洲精品看不卡 | 国产成人区 | 在线观看亚洲精品 | 国产资源在线视频 | 欧美乱码精品一区二区 | 日本精品久久久久中文字幕5 | 99热国产在线中文 | 日韩一级电影在线观看 | 久久久久久高潮国产精品视 | 欧美成年人在线视频 | 激情综合网色播五月 | 九九色在线观看 | 国产欧美最新羞羞视频在线观看 | 美女免费电影 | 欧美日韩国产一二三区 | 在线之家免费在线观看电影 | 在线a视频免费观看 | 日韩在线观看三区 | 色av男人的天堂免费在线 | 综合激情伊人 | aaa日本高清在线播放免费观看 | 九九九热精品免费视频观看网站 | 免费中文字幕视频 | h文在线观看免费 | 国产91亚洲| 色狠狠干| 欧美一级特黄aaaaaa大片在线观看 | 91福利视频一区 | 久久精品综合视频 | 久草在线中文视频 | 国产一级高清视频 | 久久精品视频免费播放 | 中文字幕成人在线观看 | 激情五月婷婷激情 | 色视频网址 | 日批在线观看 | 久久国产区 | 久草在线在线 | 国产99久久久国产精品 | 午夜三级影院 | 国产欧美精品一区二区三区四区 | 国产精品一区二区在线观看 | 久久久久亚洲最大xxxx | 狠狠狠狠狠狠操 | 日韩色爱 | 国内成人精品2018免费看 | 在线观看涩涩 | 五月婷av| 人人dvd| 久久99精品热在线观看 | 国产精品成人aaaaa网站 | 国产精品免费一区二区 | av大全免费在线观看 | 有码中文字幕 | 国产精品一区二区久久精品爱涩 | 在线亚洲观看 | 操操操av| 91精品久久久久 | 久在线观看视频 | 免费在线黄色av | 亚洲精品乱码久久久久久写真 | 亚洲精品国产精品乱码在线观看 | 九九视频在线播放 | 国产成人99av超碰超爽 | 中文字幕一区二区三区久久蜜桃 | 欧美日韩国产在线一区 | 91网站在线视频 | 亚洲一区二区三区在线看 | 中文字幕在线专区 | 免费日韩一区二区 | 亚一亚二国产专区 | 最近2019中文免费高清视频观看www99 | 在线免费av电影 | 国产日本三级 | 99爱视频 | 婷婷久操 | 在线精品亚洲 | 日韩理论影院 | 欧美精品中文在线免费观看 | 国产亚洲精品久 | 国产91综合一区在线观看 | 亚洲 欧美 另类人妖 | 婷婷视频 | 亚洲午夜精品久久久久久久久 | 特级毛片网站 | 日韩三级在线 | 粉嫩aⅴ一区二区三区 | 国产精品乱码久久久久久1区2区 | 97爱 | 精品国产一区二区在线 | 成人a在线 | 午夜精品福利一区二区三区蜜桃 | 色婷婷狠狠操 | 伊人伊成久久人综合网小说 | 中文字幕一区av | www激情网 | 97视频在线观看成人 | 久久av中文字幕片 | 2019av在线视频 | 国产一级黄色片免费看 | 天天做日日爱夜夜爽 | 久久九九免费视频 | 久久中文视频 | 狠狠色丁香婷婷综合橹88 | 国产精品欧美久久久久无广告 | av片在线看 | 欧美日韩在线视频观看 | 在线看成人片 | 天天综合天天做天天综合 | 一级一片免费视频 | 五月激情丁香图片 | 天天操狠狠操网站 | 欧美a性| 一区二区日韩av | 亚洲人成网站精品片在线观看 | 亚洲精品系列 | 色无五月 | 91激情视频在线观看 | 亚洲a色 | 亚洲精品中文字幕在线观看 | 亚州国产精品久久久 | 亚洲精品美女在线 | 最近最新最好看中文视频 | 在线黄色av电影 | 黄色av在 | 日韩中文字幕一区 | 99久久99久久精品国产片 | 国产精品麻豆果冻传媒在线播放 | 天天射日 | 在线 高清 中文字幕 | 日韩在线观看影院 | 久久噜噜少妇网站 | 午夜av不卡 | 中文字幕精品一区久久久久 | 国产在线视频资源 | 婷婷色综合| 日韩一片| 麻豆av电影 | 激情欧美一区二区免费视频 | 国产一级片久久 | 日韩在线观看的 | 国产美女黄网站免费 | 亚洲午夜精品在线观看 | 久久综合视频网 | 婷婷丁香七月 | 很污的网站| 视频高清 | 日韩首页 | 欧美网站黄色 | 超碰免费av | 欧美另类性 | 中文国产字幕在线观看 | 日本久久中文 | 日本精品一区二区三区在线观看 | 亚洲一级免费观看 | 99久视频 | 欧美日韩精品在线观看视频 | 日韩天天综合 | 久久伊人色综合 | 在线免费黄色av | 日韩中文字幕免费在线观看 | 精品一二三区 | 久久这里只有精品久久 | 久久一区国产 | 中文字幕中文中文字幕 | 亚洲精品视频在线观看免费视频 | 中文字幕色婷婷在线视频 | 欧美成人亚洲成人 | 免费三及片 | 91精品视频播放 | 美女视频网站久久 | 夜夜操网站 | 97人人添人澡人人爽超碰动图 | 一区二区视频电影在线观看 | 91麻豆精品91久久久久同性 | 免费日韩一区二区三区 | 丁香在线观看完整电影视频 | 国产91免费在线观看 | 久草视频在线免费 | 在线免费av网 | 日韩中文字幕免费在线观看 | 日韩高清在线不卡 | 国产精品久久久久久久久久久久冷 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 国产精品一区二区三区在线看 | 91麻豆国产福利在线观看 | 午夜精品av在线 | 91精品啪 | 视频一区二区精品 | 国产97色| 免费视频xnxx com | 日韩欧美在线一区 | 国产中文字幕在线观看 | 91在线一区二区 | 久草在线视频免赞 | 国产亚州精品视频 | 夜夜操狠狠干 | 亚洲精品网页 | avav片| 久久精品91久久久久久再现 | 五月婷婷狠狠 | 91在线免费观看网站 | 91精品对白一区国产伦 | 国产成人久久精品77777 | 国产亚洲精品女人久久久久久 | 欧美性生活小视频 | 亚洲涩涩色 | 日韩免费视频线观看 | 99久久精品国产一区 | 久久午夜精品 | 日本精品一 | 最新av网址大全 |