3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ARMV8/ARMV9指令集概述(翻译)

發布時間:2025/3/21 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ARMV8/ARMV9指令集概述(翻译) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

快速鏈接:
.
👉👉👉 個人博客筆記導讀目錄(全部) 👈👈👈

目錄

    • 1 前言
      • 為什么要寫這篇文檔
      • 我們要學習什么?
      • 推薦序
    • 2 簡介
    • 3 A64概述
      • 3.1 32位和64位之類的區別
      • 3.2 條件指令
      • 3.3 尋址功能
        • 3.3.1 寄存器變址尋址
        • 3.3.2 PC 相對尋址
      • 3.4 程序計數器 (PC)
      • 3.5 內存加載-存儲
        • 3.5.1 批量傳輸
        • 3.5.2 獨占訪問
        • 3.5.3 Load-Acquire, Store-Release
      • 3.6 整數乘法/除法
      • 3.7 浮點數
      • 3.8 高級 SIMD
    • 4 A64匯編語言
      • 4.1 基本結構
      • 4.2 指令助記符
      • 4.3 條件代碼
      • 4.4 寄存器名稱
        • 4.4.1 通用寄存器
        • 4.4.2 FP/SIMD 寄存器
      • 4.5 加載/存儲尋址模式
    • 5 A64指令集
      • 5.1 控制流程
        • 5.1.1 條件分支
        • 5.1.2 無條件分支(立即數)
        • 5.1.3 無條件分支(寄存器)
      • 5.2 內存訪問
        • 5.2.1 加載-存儲單個寄存器
        • 5.2.2 加載-存儲單個寄存器(未縮放的偏移量)
        • 5.2.3 加載單個寄存器(pc-relative,literal load)
        • 5.2.4 加載-存儲一對寄存器
        • 5.2.5 加載-存儲Non-temporal Pair
        • 5.2.6 加載-存儲非特權
        • 5.2.7 加載存儲獨占
        • 5.2.8 Load-Acquire / Store-Release
          • 5.2.8.1 Non-exclusive
          • 5.2.8.2 Exclusive
        • 5.2.9 預取內存
      • 5.3 數據處理(立即數)
        • 5.3.1 算術(立即數)
        • 5.3.2 邏輯(立即數)
        • 5.3.3 Move (wide immediate)
        • 5.3.3.1 Move (immediate)
        • 5.3.4 地址生成(Address Generation)
        • 5.3.5 位域操作
        • 5.3.6 提取(立即數)-- Extract (immediate)
        • 5.3.7 Shift(立即數)
        • 5.3.8 符號/零擴展
      • 5.4 數據處理(寄存器)
        • 5.4.1 算術(移位寄存器)
        • 5.4.2 算術(擴展寄存器)
        • 5.4.3 邏輯(移位寄存器)
        • 5.4.4 變體位(Variable Shift)
        • 5.4.5 位運算
        • 5.4.6 條件數據處理
        • 5.4.7 條件比較
      • 5.5 整數乘法/除法
        • 5.5.1 乘法
        • 5.5.2 除法
      • 5.6 標量浮點
        • 5.6.1 浮點/SIMD 標量內存訪問
        • 5.6.2 浮點移動(寄存器)
        • 5.6.3 浮點移動(立即)
        • 5.6.4 浮點轉換
        • 5.6.5 浮點四舍五入到積分
        • 5.6.6 浮點算術(1 個來源)
        • 5.6.7 浮點算術(2 個來源)
        • 5.6.8 浮點最小值/最大值
        • 5.6.9 浮點乘加
        • 5.6.10 浮點比較
        • 5.6.11 浮點條件選擇
      • 5.7 高級SIMD
        • 5.7.1 概述
        • 5.7.2 高級 SIMD 助記符
        • 5.7.3 數據移動
        • 5.7.4 向量算術
        • 5.7.5 標量算術
        • 5.7.6 向量加寬/收窄算法
        • 5.7.7 標量加寬/收窄算法
        • 5.7.8 向量一元算術
        • 5.7.9 標量一元算術
        • 5.7.10 逐元素算術
        • 5.7.11 標量逐元素算術
        • 5.7.12 向量置換
        • 5.7.13 向量立即數
        • 5.7.14 向量移位(立即)
        • 5.7.15 標量移位(立即)
        • 5.7.16 向量浮點/整數轉換
        • 5.7.17 標量浮點/整數轉換
        • 5.7.18 向量縮減(跨車道)
        • 5.7.19 向量成對算術
        • 5.7.20 標量歸約(成對)
        • 5.7.21 向量表查找
        • 5.7.22 向量加載存儲結構
        • 5.7.23 AArch32 等效高級 SIMD 助記符
        • 5.7.24 加密擴展
      • 5.8 系統說明
        • 5.8.1 異常的產生和返回
          • 5.8.1.1 Non-debug exceptions
          • 5.8.1.2 Debug exceptions
        • 5.8.2 系統寄存器訪問
        • 5.8.3 系統管理
        • 5.8.4 hints
        • 5.8.5 Barriers和CLREX
    • 6 A32和T32指令集
      • 6.1 部分棄用 的之類
      • 6.2 加載-獲取/存儲-釋放
        • 6.2.1 非排他性
        • 6.2.2 獨占
      • 6.3 VFP 標量浮點
        • 6.3.1 浮點條件選擇
        • 6.3.2 浮點minNum/maxNum
        • 6.3.3 浮點轉換(浮點到整數)
        • 6.3.4 浮點轉換(半精度到/從雙精度)
        • 6.3.5 浮點取整
      • 6.4 高級 SIMD 浮點
        • 6.4.1 浮點minNum/maxNum
        • 6.4.2 浮點轉換
        • 6.4.3 浮點取整到積分
      • 6.5 加密擴展
      • 6.6 系統說明
        • 6.6.1 停止調試
        • 6.6.2 Barriers 和 Hints

1 前言

為什么要寫這篇文檔

ARMV8都出來10年了,可是一本中文的手冊都沒用。真的很好奇,為什么沒有人翻譯這類文檔呢。
(不過最近好像有相關中文的文檔了).

本文僅僅是翻譯ARM的一篇官方的指令集文檔,僅僅是指令集文檔哦,不會介紹架構等知識。說實話,你不理解的是匯編嗎?你是看不懂指令嗎? 不你的瓶頸是硬件架構知識吧


(本文大多數都是直譯吧,翻譯的也不是太好,浪費時間。另外遺留了一些章節沒有翻譯,懶得弄了。如果你有興趣可聯系我,我給你markdown原文,一起補充下剩余的章節吧)

我們要學習什么?

這些指令,咋一看,真簡單,也不多嗎,大幾十個? 但是算上變體等,那就有數百個甚至好幾千個了。很多指令有和具體的feature和架構相關,很難去記住。
所以呢,我們可以學習一些基本的指令集,其余的使用的時候再查閱即可。如下列舉了指令的分類,我們只要對著這個分類,學習一些基礎的指令即可。

推薦序

TODO
(聯系方式)

2 簡介

本文檔概述了 ARMv8 指令集。大部分文檔描述了處理器在 AArch64 寄存器寬度狀態下運行時使用的新 A64 指令集,并定義了其首選的
架構匯編語言。

下面的第 6 節列出了 ARMv8 對 A32 和 T32 指令集(在 ARMv7 中分別稱為 ARM 和 Thumb 指令集)引入的擴展,這些擴展在處理器在
AArch32 寄存器寬度狀態下運行時可用。 A32 和 T32 匯編語言語法與 ARMv7 相同。

在下面的語法描述中,使用了以下約定:

  • UPPER UPPER?CASE文本是固定的,而小寫文本是可變的。所以寄存器名 Xn 表示‘X’是必需的,后跟可變寄存器編號,例如 X29。
  • <> 由 < > 括起來的任何項目都是對用戶在該位置提供的值類型的簡短描述。項目的較長描述通常由后續文本提供
  • { } 任何用花括號 { }括起來的項目都是可選的。項目的描述以及它的存在或不存在如何影響指令通常由后續文本提供。在某些情
    況下,花括號是語法中的實際符號,例如圍繞一個寄存器列表,并且這種情況將在周圍的文本中被調用
  • [ ] 替代字符列表可以用 [ ]括起來。可以在該位置使用單個字符,隨后的文本將描述替代的含義。在某些情況下,符號 [ 和 ] 是
    語法本身的一部分,例如尋址模式和向量元素,這些情況將在周圍的文本中被調用
  • a | b 替代詞由豎線分隔 |并且可以用括號括起來以分隔它們,例如 U(ADD|SUB)W 表示 UADDW 或 USUBW。
  • +/- 這表示可選的 + 或 ? 符號。如果兩者都沒有編碼,則假定為 +

3 A64概述

A64 指令集提供與 AArch32 或 ARMv7 中的 A32 和 T32 指令集類似的功能。然而,正如在 T32 指令集中添加 32 位指令使一些 ARM ISA 行為合理化一樣,A64 指令集包括進一步的合理化。新指令集的亮點如下:

  • 清晰、固定長度的指令集 指令為 32 位寬
  • 訪問一個更大的通用寄存器文件,其中包含 31 個未分組的寄存器 (0?30),每個寄存器擴展為 64 位。通用寄存器被編碼為 5 位字段,其中寄存器編號 31 (0b11111) 是一種特殊情況:
    (1) 表示零寄存器XZR:在大多數情況下,當用作源寄存器時,寄存器編號 31 讀取為零,并且用作目標寄存器時丟棄結果
    (2) 表示棧寄存器SP:當用作加載/存儲基址寄存器時,以及在少量算術指令中,31 號寄存器提供對當前堆棧指針的訪問
  • PC 永遠不能作為命名寄存器訪問。它的使用隱含在某些指令中,例如 PC相對加載和地址生成。唯一會導致 PC 發生非順序更改的指令是指定的控制流指令(參見第 5.1 節)和異常。不能將 PC 指定為數據處理指令或加載指令的目標。
  • 鏈接寄存器(LR) 是unbanked的通用寄存器X30, 異常鏈接寄存器ELR是系統寄存器
  • 標量加載/存儲尋址模式在標量整數、浮點和向量寄存器的所有大小和符號上都是統一的
  • 加載/存儲立即偏移量可以根據訪問大小縮放,增加其有效偏移量范圍。
  • 反映加載/存儲尋址模式的地址生成算法指令,見3.3
  • PC相對的加載/存儲和生成范圍為±4GiB的地址只需要兩條指令就可以實現,而不需要從文字池中加載偏移量。
  • 對于文字池訪問和大多數條件分支,pc相對偏移量被擴展為±1MiB,對于無條件分支和調用,pc相對偏移量被擴展為±128MiB
  • 沒有多寄存器 LDM、STM、PUSH 和 POP 指令,但可以加載存儲不連續的一對寄存器。
  • 大多數加載和存儲都允許未對齊的地址,包括配對寄存器訪問、浮點和SIMD 寄存器,但排他和有序訪問除外(請參閱第3.5.2 節)。
  • 減少條件。 更少的指令可以設置條件標志。 只有條件分支和少數數據處理指令讀取條件標志。 沒有提供條件或謂詞執行,也沒有等效于 T32 的 IT 指令(參見第 3.2 節)。
  • 數據處理指令的最后一個寄存器操作數的移位選項可用:
    (1) 僅立即換班(如 T32 中)。
    (2) ADD/SUB 沒有 RRX 移位,也沒有 ROR 移位。
    (3) ADD/SUB/CMP 指令可以先對最后一個寄存器操作數中的一個字節、半字或字進行符號或零擴展,然后是可選的 1 到 4 位左移
  • 立即生成將 A32 的旋轉 8 位立即數替換為特定于操作的編碼:
    (1) 算術指令有一個簡單的 12 位立即數,可選擇左移 12。
    (2) 邏輯指令提供復雜的復制位掩碼生成。
    (3) 其他立即數可以在 16 位“塊”中內聯構造,擴展 AArch32 的 MOVW 和 MOVT 指令。
  • 浮點支持類似于 AArch32 VFP,但有一些擴展,如 §3.6 中所述。
  • 浮點和高級 SIMD 處理共享一個寄存器文件,以類似于 AArch32 的方式,但擴展到 32 個 128 位寄存器。 較小的寄存器不再打包到較大的寄存器中,而是一對一映射到 128 位寄存器的低位,如 4.4.2 中所述。
  • 沒有對通用寄存器進行操作的 SIMD 或飽和算術指令,此類操作僅作為高級 SIMD 處理的一部分可用,如第 5.7 節所述。
  • 無法將 CPSR 作為單個寄存器訪問,但新的系統指令提供了以原子方式修改各個處理器狀態字段的能力,請參閱第 5.8.2 節。
  • 從架構中刪除了“協處理器”的概念。 5.8 中描述的一組系統指令提供:
    (1)System register access
    (2)Cache/TLB management
    (3)VA<—>PA address translation
    (4)Barriers and CLREX
    (5)Architectural hints (WFI, etc)
    (6)Debug

3.1 32位和64位之類的區別

A64 指令集中的大多數整數指令有兩種形式,它們對 64 位通用寄存器文件中的 32 位或 64 位值進行操作。在選擇 32 位指令形式的情況下,以下情況成立:

  • 源寄存器的高 32 位被忽略;
  • 目標寄存器的高 32 位設置為零;
  • 在第 31 位而不是第 63 位右移/旋轉注入;
  • 由指令設置的條件標志是從低 32 位計算的。

即使當 32 位指令形式的結果與由等效 64 位指令形式計算的低 32 位無法區分時,這種區別也適用。例如,可以使用 64 位 ORR 執行 32 位按位 ORR,并簡單地忽略結果的前 32 位。但是 A64 指令集包括單獨的 32 位和 64 位形式的 ORR 指令。

基本原理:C/C++ LP64 和 LLP64 數據模型——預計將是 AArch64 上最常用的——都將常用的 int、short 和 char 類型定義為 32 位或更少。通過在指令集中維護此語義信息,實現可以利用此信息來避免消耗能量或周期來計算、轉發和存儲此類數據類型的未使用的高 32 位。實現可以自由地以他們選擇的任何方式來利用這種自由來節省能源

除了不同的符號/零擴展指令外,A64 指令集還提供擴展和移位 ADD、SUB 或 CMP 指令的最終源寄存器以及加載/存儲指令的索引寄存器的能力。這允許有效實現涉及 64 位數組指針和 32 位數組索引的數組索引計算。

匯編語言符號旨在允許將保存 32 位值的寄存器與保存 64 位值的寄存器區分開來。除了提高可讀性外,工具還可以使用它來執行有限的類型檢查,以識別因寄存器大小變化而導致的編程錯誤。

3.2 條件指令

A64 指令集不包括謂詞或條件執行的概念。基準測試表明,現代分支預測器工作得很好,以至于指令的預測執行并沒有提供足夠的好處來證明它對操作碼空間的大量使用以及它在高級實現中的實現成本。

提供了一組非常小的“條件數據處理”指令。這些指令是無條件執行的,但使用條件標志作為指令的額外輸入。該集合已被證明在條件分支預測不佳或效率低下的情況下是有益的。

條件指令類型有:

  • 條件分支:傳統的ARM 條件分支,連同比較和寄存器零/非零分支,以及測試寄存器中的單個位和零/非零分支——所有這些都增加了位移。
  • 進位加/減:傳統的 ARM 指令,用于多精度算術、校驗和等。
  • 帶遞增、取反或取反的條件選擇:有條件地在一個源寄存器和第二個遞增/取反/取反/未修改的源寄存器之間進行選擇。基準測試顯示這些是單個條件指令的最高頻率使用,例如用于計數、絕對值等。這些指令還實現:
    (1) 條件選擇(移動):將目標設置為兩個源寄存器之一,由條件標志選擇。短條件序列可以用無條件指令替換,然后是條件選擇。
    (2) 條件集:有條件地在 0 和 1 或 -1 之間選擇,例如將條件標志物化為通用寄存器中的布爾值或掩碼。
  • 條件比較:如果原始條件為真,則將條件標志設置為比較結果,否則設置為立即值。允許在不使用條件分支或在通用寄存器中執行布爾運算的情況下扁平化嵌套條件表達式。

3.3 尋址功能

64 位架構的主要動機是訪問更大的虛擬地址空間。 AArch64 內存轉換系統支持 49 位虛擬地址(每個轉換表 48 位)。 虛擬地址從 49 位符號擴展,并存儲在 64 位指針中。 可選地,在系統寄存器的控制下,64 位指針的最高有效 8 位可以保存一個“標記”,當用作加載/存儲地址或間接分支的目標時,該標記將被忽略。

3.3.1 寄存器變址尋址

A64 指令集擴展了 32 位 T32 尋址模式,允許將 64 位索引寄存器添加到 64 位基址寄存器,并可以根據訪問大小對索引進行可選縮放。此外,它還提供了索引寄存器中 32 位值的符號或零擴展,同樣具有可選的縮放比例。

如果可以在單個周期內執行這些寄存器索引尋址模式,它們將提供有用的性能增益,并且相信至少一些實現將能夠做到這一點。但是,根據 AArch32 的實現經驗,預計其他實現將需要一個額外的周期來執行此類尋址模式。

基本原理:架構師希望實現可以自由地微調每個實現中的性能權衡,并注意提供在某些實現中需要兩個周期的指令比要求在一個可以在單個周期內執行此地址算術的實現。

3.3.2 PC 相對尋址

改進了對位置無關代碼和數據尋址的支持:

  • PC 相關文字負載的偏移范圍為 ±1MiB。 這允許更少的文字池,并在函數之間更多地共享文字數據——減少 I-cache 和 TLB 污染。
  • 大多數條件分支的范圍為 ±1MiB,預計足以滿足在單個函數中發生的大多數條件分支。
  • 無條件分支,包括分支和鏈接,范圍為 ±128MiB。 預計足以跨越大多數可執行加載模塊和共享對象的靜態代碼段,而不需要鏈接器插入的蹦床或“膠合板”。
  • PC 相關的加載/存儲和范圍為 ±4GiB 的地址生成可以僅使用兩條指令內聯執行,即無需從文字池加載偏移量。

3.4 程序計數器 (PC)

當前的程序計數器 (PC) 不能像通用寄存器文件的一部分一樣通過數字來引用,因此不能用作算術指令的源或目標,也不能用作加載/存儲指令的基址、索引或傳輸寄存器。 讀取 PC 的唯一指令是那些功能是計算 PC 相對地址(ADR、ADRP、文字加載和直接分支)的指令,以及將其存儲在鏈接寄存器中的分支和鏈接指令(BL 和 BLR)。 修改程序計數器的唯一方法是使用顯式控制流指令:條件分支、無條件分支、異常生成和異常返回指令。

如果指令讀取 PC 以計算 PC 相對地址,那么它的值就是指令的地址,即與 A32 和 T32 不同,沒有隱含的 4 或 8 個字節的偏移量。

3.5 內存加載-存儲

3.5.1 批量傳輸

A64 中不存在 LDM、STM、PUSH 和 POP 指令,但是可以使用 LDP 和 STP 指令構建批量傳輸,這些指令從連續的內存位置加載和存儲一對獨立的寄存器,并且在訪問普通內存時支持未對齊的地址 . LDNP 和 STNP 指令還提供“流”或“非臨時”提示,表明數據不需要保留在緩存中。 PRFM(預取存儲器)指令還包括“流式”或“非臨時”訪問的提示,并允許將預取定位到特定的緩存級別。

3.5.2 獨占訪問

字節、半字、字和雙字的獨占加載存儲。 對一對雙字的獨占訪問允許對一對指針進行原子更新,例如循環列表插入。 所有獨占訪問必須自然對齊,并且獨占對訪問必須對齊到兩倍的數據大小(即 64 位對的 16 個字節)。

3.5.3 Load-Acquire, Store-Release

顯式同步加載和存儲指令實現了釋放一致性 (RCsc) 內存模型,減少了對顯式內存屏障的需求,并為共享內存的新興語言標準提供了良好的匹配。 這些指令以排他和非排他的形式存在,并且需要自然地址對齊。 有關詳細信息,請參閱第 5.2.8 節。

3.6 整數乘法/除法

3.7 浮點數

AArch64 在任何需要浮點運算的地方都強制使用硬件浮點——AArch64 過程調用標準 (PCS) 沒有“軟浮點”變體。

浮點功能類似于 AArch32 VFP,但有以下變化:

  • 刪除了VFP 已棄用的“小向量”功能。
  • 有32 個S 寄存器和32 個D 寄存器。 S 寄存器不打包到 D 寄存器中,而是占用相應 D 寄存器的低 32 位。例如 S31=D31<31:0>,而不是 D15<63:32>。
  • 加載/存儲尋址模式與整數加載/存儲相同。
  • 加載/存儲一對浮點寄存器。
  • 浮點FCSEL 和FCCMP 等效于整數CSEL 和CCMP。
  • 浮點FCMP 和FCCMP 指令直接設置整數條件標志,不修改FPSR 中的條件標志。
  • 所有浮點乘加和乘減指令都是“融合”的。
  • 在 64 位整數和浮點之間轉換。
  • 將FP 轉換為具有明確舍入方向的整數(朝向零、朝向+Inf、朝向-Inf、到最接近的關系到偶數,以及最接近的關系以及遠離零的關系)。
  • 使用明確的舍入方向(如上)將 FP 舍入到最接近的整數 FP。
  • 半精度和雙精度之間的直接轉換。
  • FMINNM 和FMAXNM 實現IEEE754-2008 minNum() 和maxNum() 操作,如果其中一個操作數是安靜的NaN,則返回數值。

3.8 高級 SIMD

詳見下面5.7的詳細描述

4 A64匯編語言

字母 W 是 32 位字的簡寫,X 是 64 位擴展字的簡寫。使用字母 X(擴展)而不是 D(雙精度),因為 D 與其用于浮點和 SIMD“雙精度”寄存器以及 T32 加載/存儲“雙寄存器”指令(例如 LDRD)的使用相沖突。

A64 匯編器將識別指令助記符和寄存器名稱的大寫和小寫變體,但不能識別大小寫混合。 A64 反匯編程序可以輸出大寫或小寫的助記符和寄存器名稱。程序和數據標簽的情況很重要。

基本語句格式和操作數順序遵循 AArch32 UAL 匯編器和反匯編器使用的,即每個源代碼行一個語句,由一個或多個可選程序標簽組成,后跟指令助記符,然后是目標寄存器和一個或多個源操作數被逗號隔開。
{label:*} {opcode {dest{, source1{, source2{, source3}}}}}
與 AArch32 UAL 一樣,存儲指令的 dest/source 順序是相反的。 A64 匯編語言不需要“#”符號來引入立即值,盡管匯編器必須允許它。為了便于閱讀,A64 反匯編程序應始終在立即值之前輸出“#”。

如果用戶定義的符號或標簽與預定義的寄存器名稱(例如“X0”)相同,那么如果在其解釋不明確的上下文中使用它 - 例如在可以接受寄存器名稱的操作數位置或立即表達式——然后匯編器必須將其解釋為寄存器名稱。可以通過在表達式上下文中使用符號來消除歧義,即將其放在括號內和/或在其前面加上顯式的“#”符號。

在下面的示例中,序列“//”用作注釋前導符,但 A64 匯編器也應支持其舊版 ARM 注釋語法

4.1 基本結構

A64指令形式可以通過以下屬性組合來識別:

  • 指示指令語義的operation name(例如 ADD)。
  • operand container,通常是寄存器類型。 一條指令寫入整個container,但如果它不是同類中最大的,則該類中最大container的其余部分設置為零。
  • operand data subtype,其中一些操作數與主container的大小不同。
  • final source operand type,可以是寄存器或立即數。

operand container是以下之一:

operand data subtype是以下之一:

4.2 指令助記符

這些屬性以匯編語言符號組合在一起,以標識特定的指令形式。為了保持與現有 ARM 匯編語言的緊密外觀,采用了以下格式:
<name>{<subtype>} <container>

換句話說,操作名稱和子類型由指令助記符描述,容器大小由操作數名稱描述。省略子類型的地方,它是從容器繼承的。

通過這種方式,匯編程序員可以編寫指令而無需記住大量新的助記符;反匯編清單的讀者可以直接閱讀一條指令,一眼就能看出每個操作數的類型和大小。

這意味著A64匯編語言重載了指令助記符,并根據操作數寄存器名稱來區分指令的不同形式。例如,下面的 ADD 指令都有不同的操作碼,但程序員只需記住一個助記符,匯編器會根據操作數自動選擇正確的操作碼——反匯編器則相反。

4.3 條件代碼

在 AArch32 匯編語言中,條件執行指令通過直接將條件附加到助記符來表示,沒有分隔符。這會導致一些歧義,從而使匯編代碼難以解析:例如,ADCS、BICS、LSLS 和 TEQ 乍一看就像條件指令。

A64 ISA 設置或測試條件代碼的指令要少得多。那些這樣做的人將被識別如下:

  • 設置條件標志的指令在概念上是不同的指令,并且將通過在基本助記符后附加“S”來繼續識別,例如添加。
  • 真正有條件執行的指令(即,當條件為假時,它們對體系結構狀態沒有影響,除了推進程序計數器)將條件附加到帶有“。”的指令中。分隔符。例如 B.EQ。
  • 如果有多個指令擴展,則條件擴展總是最后一個。
  • 如果條件指令具有限定符,則限定符遵循條件。
  • 無條件執行但使用條件標志作為源操作數的指令,將在其最終操作數位置指定要測試的條件,例如CSEL Wd,Wm,Wn,NE
  • 為了提高可移植性,A64 匯編器還可以提供舊的 UAL 條件助記符,只要它們在 A64 ISA 中具有直接等效項。但是,UAL 助記符不會由 A64 反匯編程序生成——在 64 位匯編代碼中不推薦使用它們,如果程序員沒有明確要求向后兼容,可能會導致警告或錯誤。

    條件代碼的完整列表如下:

    ?條件代碼 NV 的存在僅用于提供對“1111b”編碼的有效反匯編,否則其行為與 AL 相同。

    4.4 寄存器名稱

    4.4.1 通用寄存器

    general purpose registers組中的 31 個通用寄存器命名為 R0 到 R30,特殊寄存器編號 31 具有不同的名稱,具體取決于使用它的上下文。但是,當寄存器以特定指令形式使用時,它們必須進一步限定以指示操作數數據大小(32 位或 64 位),從而指示指令的數據大小。

    通用寄存器的限定名稱如下,其中“n”是寄存器編號 0 到 30:

    其中寄存器編號 31 表示讀取零或丟棄結果(又名“零寄存器”):

    其中寄存器號 31 表示堆棧指針:

    更詳細地說:

    • 名稱Xn 和Wn 指的是相同的架構寄存器。
    • 沒有名為W31 或X31 的寄存器。
    • 對于寄存器31 被解釋為64 位堆棧指針的指令操作數,它由名稱SP 表示。對于不將寄存器 31 解釋為 64 位堆棧指針的操作數,此名稱將導致匯編錯誤。
    • WSP 名稱將寄存器 31 表示為 32 位上下文中的堆棧指針。提供它只是為了允許有效的反匯編,并且不應在行為正確的 64 位代碼中看到。
    • 對于將寄存器 31 解釋為零寄存器的指令操作數,它在 64 位上下文中由名稱 XZR 表示,在 32 位上下文中由名稱 WZR 表示。在不將寄存器 31 解釋為零寄存器的操作數位置中,這些名稱將導致匯編錯誤。
    • 如果助記符過載(即可以根據數據大小生成不同的指令編碼),則匯編程序應根據第一個寄存器操作數的大小確定指令的精確形式。通常其他操作數寄存器應該與第一個操作數的大小相匹配,但在某些情況下,一個寄存器可能有不同的大小(例如,地址基址寄存器總是 64 位),如果源寄存器包含被指令擴展為 64 位的字、半字或字節。
    • 該體系結構沒有為寄存器 30 定義一個特殊名稱,以反映其作為過程調用中的鏈接寄存器的特殊作用。此類軟件名稱可以定義為過程調用標準的一部分。

    4.4.2 FP/SIMD 寄存器

    FP/SIMD 寄存器組中名為 V0 到 V31 的 32 個寄存器用于保存標量浮點指令的浮點操作數,以及高級 SIMD 指令的標量和向量操作數。 與通用整數寄存器一樣,當它們以特定指令形式使用時,必須進一步限定名稱以指示其中保存的數據形狀(即數據元素大小和元素或通道數)。

    但是請注意,數據類型,即每個寄存器或向量元素中的位解釋——整數(有符號、無符號或不相關)、浮點、多項式或加密哈希——不是由寄存器名稱描述的,而是由指令助記符描述的 對它們進行操作。 有關更多詳細信息,請參閱第 5.7 節中的高級 SIMD 描述。

    4.5 加載/存儲尋址模式

    A64 指令集中的加載/存儲尋址模式大致遵循 T32,包括一個 64 位基址寄存器(Xn 或 SP)加上一個立即數或寄存器偏移量。

    • 立即偏移量以各種方式編碼,具體取決于加載/存儲指令的類型:
    • 在立即偏移量被縮放的地方,它被編碼為數據訪問大小的倍數(PCrelative 加載除外,它總是一個字倍數)。匯編器總是接受一個字節偏移量,它被轉換成縮放的偏移量進行編碼,反匯編器解碼縮放的偏移量編碼并將其顯示為字節偏移量。因此,支持的字節偏移范圍根據加載/存儲指令的類型和數據訪問大小而有所不同。
    • “后索引”形式意味著內存地址是基址寄存器的值,然后基址加偏移量被寫回基址寄存器。
    • “預索引”形式意味著內存地址是基址寄存器值加上偏移量,然后計算的地址被寫回基址寄存器。
    • “寄存器偏移”意味著內存地址是基址寄存器值加上 64 位變址寄存器 Xm 的值,可以選擇按訪問大小(以字節為單位)縮放,即左移 log2(size)。
    • “擴展寄存器偏移”意味著存儲器地址是基址寄存器值加上 32 位變址寄存器 Wm 的值,符號或零擴展為 64 位,然后可以根據訪問大小進行縮放。
    • 匯編器應接受 Xm 作為擴展變址寄存器,但首選 Wm。
    • 前/后索引表格不適用于寄存器偏移。
    • 沒有“向下”選項,因此從基址寄存器中減法需要負符號立即偏移(二進制補碼)或索引寄存器中的負值。
    • 當基址寄存器為 SP 時,堆棧指針需要在地址計算和回寫之前進行四字(16 字節,128 位)對齊 - 未對齊將導致堆棧對齊錯誤。堆棧指針不能用作索引寄存器。
    • 使用程序計數器 (PC) 作為基址寄存器隱含在文字加載指令中,并且不允許在其他加載或存儲指令中使用。文字加載不包括字節和半字形式。標簽的定義見下文第 5 節。

    5 A64指令集

    5.1 控制流程

    5.1.1 條件分支

    • B.cond label 跳轉指令:如果cond 為真,則有條件地跳轉到程序相關標簽。
    • CBNZ Wn, label 比較和非零分支:如果 Wn 不等于零,則有條件地跳轉到程序相關標簽。
    • CBNZ Xn, label 比較和非零分支(擴展):如果 Xn 不等于零,有條件地跳轉到標簽。
    • CBZ Wn, label 比較和分支零:如果 Wn 等于零,有條件地跳轉到標簽。
    • CBZ Xn, label 比較和分支零(擴展):如果 Xn 等于零,有條件地跳轉到標簽。
    • TBNZ Xn|Wn, #uimm6, label 測試和非零分支:如果寄存器 Xn 中的位號 uimm6 不為零,則有條件地跳轉到標簽。位號表示寄存器的寬度,如果 uimm 小于 32,則可以寫入并反匯編為 Wn。限制在 ±32KiB 的分支偏移范圍內。
    • TBZ Xn|Wn, #uimm6, label 測試和分支零:如果寄存器 Xn 中的位號 uimm6 為零,則有條件地跳轉到標簽。位號表示寄存器的寬度,如果 uimm6 小于 32,則可以寫入并反匯編為 Wn。限制在 ±32KiB 的分支偏移范圍內。

    5.1.2 無條件分支(立即數)

    無條件跳轉支持 ±128MiB 的立即分支偏移范圍。

    • B label 跳轉:無條件跳轉到pc-relative label。
    • BL label 鏈接跳轉:無條件跳轉到pc相對標簽,將下一條順序指令的地址寫入X30寄存器。

    5.1.3 無條件分支(寄存器)

    • BLR Xm 跳轉鏈接寄存器:無條件跳轉到Xm中的地址,將下一條連續指令的地址寫入X30寄存器。
    • BR Xm 分支寄存器:跳轉到Xm 中的地址,提示CPU 這不是子程序返回。
    • RET {Xm} 返回:跳轉到寄存器Xm,提示CPU這是一個子程序返回。 如果省略 Xm,匯編器將默認注冊 X30。

    5.2 內存訪問

    除了排他和顯式排序的加載和存儲之外,地址可能具有任意對齊,除非啟用了嚴格的對齊檢查 (SCTLR.A==1)。 但是,如果 SP 用作基址寄存器,則在添加任何偏移之前的堆棧指針的值必須是四字(16 字節)對齊,否則將產生堆棧對齊異常。

    由與傳輸大小對齊的單個通用寄存器的加載或存儲生成的內存讀取或寫入是原子的。 由一對與寄存器大小對齊的通用寄存器的非獨占加載或存儲產生的內存讀取或寫入被視為兩個原子訪問,每個寄存器一個。 在所有其他情況下,除非另有說明,否則沒有原子性保證。

    5.2.1 加載-存儲單個寄存器

    最通用的加載存儲形式支持多種尋址模式,包括基址寄存器 Xn 或 SP,以及以下之一:

    • 縮放的 12 位無符號立即偏移量,沒有索引前和索引后選項。
    • 未縮放的 9 位有符號立即偏移量,帶有索引前或索引后寫回。
    • 縮放或未縮放的 64 位寄存器偏移量。
    • 縮放或未縮放的 32 位擴展寄存器偏移量。

    如果 Load 指令指定寫回,并且正在加載的寄存器也是基址寄存器,則可能發生以下行為之一:

    • 指令未分配
    • 該指令被視為 NOP
    • 指令使用指定的尋址模式執行加載,基址寄存器變為 UNKNOWN。此外,如果在此類指令期間發生異常,則基地址可能會被破壞,從而無法重復該指令。

    如果 Store 指令執行回寫并且正在存儲的寄存器也是基址寄存器,則可能會發生以下行為之一:

    • 指令未分配
    • 該指令被視為 NOP
    • 指令執行使用指定尋址模式指定的寄存器的存儲,但存儲的值是 UNKNOWN

    • LDR Wt, addr
      加載寄存器:從 addr 尋址的內存中加載一個字到 Wt。
    • LDR Xt, addr
      加載寄存器(擴展):從 addr 尋址的內存中加載一個雙字到 Xt。
    • LDRB Wt, addr
      加載字節:從 addr 尋址的內存中加載一個字節,然后將其零擴展至 Wt。
    • LDRSB Wt, addr
      加載有符號字節:從 addr 尋址的內存中加載一個字節,然后將其符號擴展到 Wt 中。
    • LDRSB Xt, addr
      加載有符號字節(擴展):從 addr 尋址的內存中加載一個字節,然后將其符號擴展到 Xt 中。
    • LDRH Wt, addr
      加載半字:從 addr 尋址的內存中加載半字,然后將其零擴展為 Wt。
    • LDRSH Wt, addr
      Load Signed Halfword:從 addr 尋址的內存中加載一個半字,然后將其符號擴展為 Wt。
    • LDRSH Xt, addr
      加載有符號半字(擴展):從 addr 尋址的內存中加載一個半字,然后將其符號擴展到 Xt 中。
    • LDRSW Xt, addr
      加載帶符號的字(擴展):從 addr 尋址的內存中加載一個字,然后將其符號擴展到 Xt 中。
    • STR Wt, addr
      存儲寄存器:將字從 Wt 存儲到由 addr 尋址的存儲器。
    • STR Xt, addr
      存儲寄存器(擴展):將雙字從 Xt 存儲到由 addr 尋址的內存。
    • STRB Wt, addr
      存儲字節:將來自 Wt 的字節存儲到由 addr 尋址的內存中。
    • STRH Wt, addr
      存儲半字:將半字從 Wt 存儲到由 addr 尋址的內存中。

    5.2.2 加載-存儲單個寄存器(未縮放的偏移量)

    加載-存儲單寄存器(未縮放偏移)指令支持基址寄存器 Xn 或 SP 的尋址模式,此外:

    • 未縮放、9 位、有符號立即偏移量,沒有索引前和索引后選項

    這些指令使用獨特的助記符將它們與正常的加載存儲指令區分開來,因為當偏移為正且自然對齊時,功能與縮放的 12 位無符號立即偏移尋址模式重疊。

    當立即偏移量明確時,即當它為負數或未對齊時,對程序員友好的匯編程序可以生成這些指令以響應標準 LDR/STR 助記符。 類似地,當編碼的立即數為負數或未對齊時,反匯編程序可以使用標準 LDR/STR 助記符顯示這些指令。 然而,架構匯編語言不需要這種行為。

    • LDUR Wt, [base,#simm9]
      加載(未縮放)寄存器:將一個字從由 base+simm9 尋址的內存加載到 Wt。
    • LDUR Xt, [base,#simm9]
      加載(未縮放)寄存器(擴展):將一個雙字從由 base+simm9 尋址的內存加載到 Xt。
    • LDURB Wt, [base,#simm9]
      加載(未縮放)字節:從內存中加載一個字節,地址為 base+simm9,然后將其零擴展為 Wt。
    • LDURSB Wt, [base,#simm9]
      加載(未縮放)有符號字節:從由 base+simm9 尋址的內存中加載一個字節,然后將其符號擴展為 Wt。
    • LDURSB Xt, [base,#simm9]
      Load (Unscaled) Signed Byte (extended):從base+simm9尋址的內存中加載一個字節,然后將其符號擴展到Xt中。
    • LDURH Wt, [base,#simm9]
      加載(未縮放)半字:從 base+simm9 尋址的內存中加載半字,然后將其零擴展為 Wt。
    • LDURSH Wt, [base,#simm9]
      Load (Unscaled) Signed Halfword:從 base+simm9 尋址的內存中加載一個半字,然后將其符號擴展為 Wt。
    • LDURSH Xt, [base,#simm9]
      加載(未縮放)有符號半字(擴展):從 base+simm9 尋址的內存中加載一個半字,然后將其符號擴展為 Xt。
    • LDURSW Xt, [base,#simm9]
      加載(未縮放)有符號字(擴展):從內存中加載一個由 base+simm9 尋址的字,然后將其符號擴展為 Xt。
    • STUR Wt, [base,#simm9]
      存儲(未縮放)寄存器:將字從 Wt 存儲到由 base+simm9 尋址的存儲器。
    • STUR Xt, [base,#simm9]
      存儲(未縮放)寄存器(擴展):將雙字從 Xt 存儲到由 base+simm9 尋址的內存。
    • STURB Wt, [base,#simm9]
      存儲(未縮放)字節:將字節從 Wt 存儲到由 base+simm9 尋址的內存。
    • STURH Wt, [base,#simm9]
      存儲(未縮放)半字:將半字從 Wt 存儲到由 base+simm9 尋址的內存。

    5.2.3 加載單個寄存器(pc-relative,literal load)

    用于加載的 pc 相對地址被編碼為 19 位有符號字偏移量,該偏移量左移 2 并添加到程序計數器,從而可以訪問 PC 的 ±1MiB 內的任何字對齊位置。

    為方便起見,匯編程序通常允許符號“=value”與相對 pc 的文字加載指令一起自動將立即值或符號地址放置在附近的文字池中,并生成引用它的隱藏標簽。但是該語法不是架構的,并且永遠不會出現在反匯編中。 A64 有其他指令可以在寄存器中構造立即值(第 5.3.3 節)和地址(第 5.3.4 節),這可能比從文字池中加載它們更好。

    • LDR Wt, label | =價值
      加載文字寄存器(32 位):從標簽尋址的內存中加載一個字到 Wt。
    • LDR Xt,標簽 | =價值
      加載文字寄存器(64 位):從標簽尋址的內存中加載一個雙字到 Xt。
    • LDRSW Xt, 標簽 | =價值
      Load Literal Signed Word (extended):從內存中加載一個按標簽尋址的單詞,然后將其符號擴展到 Xt 中。

    5.2.4 加載-存儲一對寄存器

    加載-存儲對指令支持由基址寄存器 Xn 或 SP 組成的尋址模式,以及:

    • 縮放的 7 位有符號立即偏移量,具有索引前和索引后寫回選項

    如果加載對指令為正在加載的兩個寄存器指定相同的寄存器,則其中一個
    可能會出現以下行為:

    • 指令未分配
    • 該指令被視為 NOP
    • 該指令使用指定的尋址模式執行所有加載,并且正在加載的寄存器采用 UNKNOWN 值

    如果加載對指令指定回寫并且正在加載的寄存器之一也是基址寄存器,則
    可能會出現以下行為之一:

    • 指令未分配
    • 該指令被視為 NOP
    • 該指令使用指定的尋址模式執行所有加載,并且基址寄存器變為 UNKNOWN。此外,如果在此類指令期間發生異常,則基地址可能會被破壞,從而無法重復該指令。

    如果存儲對指令執行回寫并且正在存儲的寄存器之一也是基址寄存器,則可能發生以下行為之一:

    • 指令未分配
    • 該指令被視為 NOP
    • 該指令執行所有使用指定尋址模式指定的寄存器的存儲,但為基址寄存器存儲的值是 UNKNOWN

    • LDP Wt1, Wt2, addr
      加載對寄存器:將兩個字從 addr 尋址的存儲器加載到 Wt1 和 Wt2。
    • LDP Xt1, Xt2, addr
      加載對寄存器(擴展):從 addr 尋址的內存中加載兩個雙字到 Xt1 和 Xt2。
    • LDPSW Xt1, Xt2, addr
      Load Pair Signed Words (extended) 從 addr 尋址的內存中加載兩個字,然后將它們符號擴展為 Xt1 和 Xt2。
    • STP Wt1, Wt2, addr
      存儲對寄存器:將兩個字從 Wt1 和 Wt2 存儲到由 addr 尋址的存儲器。
    • STP Xt1, Xt2, addr
      存儲對寄存器(擴展):將兩個雙字從 Xt1 和 Xt2 存儲到由 addr 尋址的內存中。

    5.2.5 加載-存儲Non-temporal Pair

    LDNP 和 STNP 非時間對指令向內存系統提供了一個提示,即訪問是“非時間”或“流式”的,并且不太可能在不久的將來再次訪問,因此不需要保留在數據緩存中。但是,根據內存類型,它們可能允許預加載內存讀取并收集內存寫入,以加速大容量內存傳輸。

    此外,作為正常內存排序規則的一個特殊例外,其中兩次內存讀取之間存在地址依賴性,并且第二次讀取是由 Load Non-temporal Pair 指令生成的,那么在沒有任何其他屏障機制來實現順序的情況下,在被訪問的內存地址的可共享域內,其他觀察者可以以任何順序觀察這些內存訪問。

    LDNP 和 STNP 指令支持基址寄存器 Xn 或 SP 的尋址模式,此外:

    • 縮放的 7 位有符號立即偏移量,沒有索引前和索引后選項

    如果 Load Non-temporal Pair 指令為正在加載的兩個寄存器指定相同的寄存器,則
    可能會出現以下行為之一:

    • 指令未分配
    • 該指令被視為 NOP
    • 該指令使用指定的尋址模式執行所有加載,并且正在加載的寄存器采用 UNKNOWN 值

    • LDNP Wt1, Wt2, [base,#imm]
      Load Non-temporal Pair:從內存中通過 base+imm 尋址的兩個字加載到 Wt1 和 Wt2,并帶有非時間提示。
    • LDNP Xt1, Xt2, [base,#imm]
      Load Non-temporal Pair (extended):將兩個雙字從 base+imm 尋址的內存中加載到 Xt1 和 Xt2,并帶有非臨時提示。
    • STNP Wt1, Wt2, [base,#imm]
      存儲非時間對:將 Wt1 和 Wt2 中的兩個單詞存儲到由 base+imm 尋址的內存中,并帶有非時間提示。
    • STNP Xt1, Xt2, [base,#imm]
      存儲非時間對(擴展):將兩個雙字從 Xt1 和 Xt2 存儲到由 base+imm 尋址的內存中,并帶有非時間提示。

    5.2.6 加載-存儲非特權

    當處理器處于 EL1 異常級別時,可以使用加載-存儲非特權指令來執行內存訪問,就像它處于 EL0(非特權)異常級別一樣。 如果處理器處于任何其他異常級別,則執行該級別的正常內存訪問。 (這些助記符中的字母“T”基于歷史上的 ARM 約定,該約定將對非特權虛擬地址的訪問描述為“翻譯”)。 加載-存儲非特權指令支持基址寄存器 Xn 或 SP 的尋址模式,此外:

    • 未縮放、9 位、有符號立即偏移量,沒有索引前和索引后選項

    • LDTR Wt, [base,#simm9]
      加載非特權寄存器:在 EL1 時使用 EL0 特權將由 base+simm9 尋址的內存中的字加載到 Wt。
    • LDTR Xt, [base,#simm9]
      加載非特權寄存器(擴展):將雙字從由 base+simm9 尋址的內存加載到 Xt,在 EL1 時使用 EL0 特權。
    • LDTRB Wt, [base,#simm9]
      加載非特權字節:從 base+simm9 尋址的內存中加載一個字節,然后將其零擴展為 Wt,在 EL1 時使用 EL0 特權。
    • LDTRSB Wt, [base,#simm9]
      Load Unprivileged Signed Byte:從base+simm9尋址的內存中加載一個字節,然后將其符號擴展到Wt,在EL1時使用EL0權限。
    • LDTRSB Xt, [base,#simm9]
      Load Unprivileged Signed Byte (extended):從內存中加載一個由 base+simm9 尋址的字節,然后在 EL1 時使用 EL0 權限將其符號擴展到 Xt。
    • LDTRH Wt, [base,#simm9]
      Load Unprivileged Halfword:從base+simm9尋址的內存中加載一個半字,然后將其零擴展為Wt,在EL1時使用EL0權限。
    • LDTRSH Wt, [base,#simm9]
      Load Unprivileged Signed Halfword:從 base+simm9 尋址的內存中加載一個半字,然后將其符號擴展為 Wt,在 EL1 時使用 EL0 權限。
    • LDTRSH Xt, [base,#simm9]
      Load Unprivileged Signed Halfword (extended):從內存中加載一個由 base+simm9 尋址的半字,然后在 EL1 時使用 EL0 權限將其符號擴展到 Xt 中。
    • LDTRSW Xt, [base,#simm9]
      Load Unprivileged Signed Word (extended):從內存中加載一個由 base+simm9 尋址的字,然后在 EL1 時使用 EL0 權限將其符號擴展到 Xt。
    • STTR Wt, [base,#simm9]
      存儲非特權寄存器:將 Wt 中的一個字存儲到由 base+simm9 尋址的內存中,在 EL1 時使用 EL0 特權。
    • STTR Xt, [base,#simm9]
      存儲非特權寄存器(擴展):將雙字從 Xt 存儲到由 base+simm9 尋址的內存,在 EL1 時使用 EL0 特權。
    • STTRB Wt, [base,#simm9]
      存儲非特權字節:將一個字節從 Wt 存儲到由 base+simm9 尋址的內存中,在 EL1 時使用 EL0 特權。
    • STTRH Wt, [base,#simm9]
      Store Unprivileged Halfword:將一個半字從 Wt 存儲到由 base+simm9 尋址的內存中,使用
      在 EL1 時的 EL0 特權

    5.2.7 加載存儲獨占

    加載獨占指令將訪問的物理地址標記為獨占訪問,由存儲獨占檢查,允許對共享內存變量、信號量、互斥鎖、自旋鎖等進行“原子”讀-修改-寫操作。

    加載-存儲獨占指令僅支持基址寄存器 Xn 或 SP 的簡單尋址模式。 #0 的可選偏移量必須被匯編器接受,但在反匯編時可以省略。

    需要自然對齊:未對齊的地址將導致對齊錯誤。 由加載獨占對或存儲獨占對生成的內存訪問必須與對的大小對齊,并且當存儲獨占對成功時,將導致整個內存位置的單副本原子更新。

    • LDXR Wt, [base{,#0}]
      加載獨占寄存器:從基址尋址的內存中加載一個字到 Wt。將物理地址記錄為獨占訪問。
    • LDXR Xt, [base{,#0}]
      加載獨占寄存器(擴展):從基址尋址的內存中加載一個雙字到 Xt。將物理地址記錄為獨占訪問。
    • LDXRB Wt, [base{,#0}]
      加載獨占字節:從基址尋址的內存中加載一個字節,然后將其零擴展為 Wt。將物理地址記錄為獨占訪問。
    • LDXRH Wt, [base{,#0}]
      加載獨占半字:從基址尋址的內存中加載半字,然后將其零擴展為 Wt。將物理地址記錄為獨占訪問。
    • LDXP Wt, Wt2, [base{,#0}]
      加載獨占對寄存器:從基址尋址的內存中加載兩個字,并將其加載到 Wt 和 Wt2。將物理地址記錄為獨占訪問。
    • LDXP Xt, Xt2, [base{,#0}]
      Load Exclusive Pair Registers (extended):從基址尋址的內存中加載兩個雙字到 Xt 和 Xt2。將物理地址記錄為獨占訪問。
    • STXR Ws, Wt, [base{,#0}]
      存儲獨占寄存器:將字從 Wt 存儲到由基址尋址的內存中,并將 Ws 設置為返回的獨占訪問狀態。
    • STXR Ws, Xt, [base{,#0}]
      存儲獨占寄存器(擴展):將雙字從 Xt 存儲到由基址尋址的內存中,并將 Ws 設置為返回的獨占訪問狀態。
    • STXRB Ws, Wt, [base{,#0}]
      存儲獨占字節:將字節從 Wt 存儲到由基址尋址的內存中,并將 Ws 設置為返回的獨占訪問狀態。
    • STXRH Ws, Wt, [base{,#0}]
      存儲獨占半字:將半字從 Xt 存儲到由基址尋址的內存中,并將 Ws 設置為返回的獨占訪問狀態。
    • STXP Ws, Wt, Wt2, [base{,#0}]
      Store Exclusive Pair:將 Wt 和 Wt2 兩個字存儲到由基址尋址的內存中,并將 Ws 設置為返回的獨占訪問狀態。
    • STXP Ws, Xt, Xt2, [base{,#0}]
      Store Exclusive Pair (extended):將Xt和Xt2的兩個雙字存儲到由基址尋址的內存中,并將Ws設置為返回的獨占訪問狀態

    5.2.8 Load-Acquire / Store-Release

    加載獲取是一種加載,它保證在加載獲取之后按程序順序出現的所有加載和存儲將在該觀察者觀察到加載獲取之后被每個觀察者觀察到,但是對于加載和存儲之前出現的加載和存儲只字未提。獲得。

    在每個觀察者觀察到在 store-release 之前按程序順序出現的任何加載或存儲之后,每個觀察者都會觀察到 store-release,但對于在 store-release 之后出現的加載和存儲只字不提。此外,每個觀察者將按程序順序觀察存儲釋放和加載獲取。

    進一步的考慮是所有的 store-release 操作必須是多副本原子的:也就是說,如果一個 agent 已經看到了 store-release,那么所有的 agent 都已經看到了 store-release。普通 store 不需要多副本原子。

    load-acquire 和 store-release 指令僅支持基址寄存器 Xn 或 SP 的簡單尋址模式。 #0 的可選偏移量必須被匯編器接受,但在反匯編時可以省略

    需要自然對齊:未對齊的地址將導致對齊錯誤。

    5.2.8.1 Non-exclusive
    • LDAR Wt, [base{,#0}]
      Load-Acquire Register:將一個字從由base尋址的內存加載到Wt。
    • LDAR Xt, [base{,#0}]
      Load-Acquire Register (extended):從基址尋址的內存中加載一個雙字到 Xt。
    • LDARB Wt, [base{,#0}]
      Load-Acquire Byte:從基址尋址的內存中加載一個字節,然后將其零擴展為 Wt。
    • LDARH Wt, [base{,#0}]
      Load-Acquire Halfword:從基址尋址的內存中加載一個半字,然后將其零擴展為 Wt。
    • STLR Wt, [base{,#0}]
      存儲釋放寄存器:將一個字從 Wt 存儲到由基址尋址的內存中。
    • STLR Xt, [base{,#0}]
      存儲釋放寄存器(擴展):將一個雙字從 Xt 存儲到由基址尋址的內存中。
    • STLRB Wt, [base{,#0}]
      Store-Release Byte:將一個字節從 Wt 存儲到由基址尋址的內存中。
    • STLRH Wt, [base{,#0}]
      Store-Release Halfword:將一個半字從 Wt 存儲到由基址尋址的內存中。
    5.2.8.2 Exclusive
    • LDAXR Wt, [base{,#0}]
      Load-Acquire Exclusive Register:將字從由base尋址的內存加載到Wt。將物理地址記錄為獨占訪問。
    • LDAXR Xt, [base{,#0}]
      Load-Acquire Exclusive Register (extended):將雙字從由基址尋址的內存加載到 Xt。將物理地址記錄為獨占訪問。
    • LDAXRB Wt, [base{,#0}]
      Load-Acquire Exclusive Byte:從基址尋址的內存中加載字節,然后將其零擴展為 Wt。將物理地址記錄為獨占訪問。
    • LDAXRH Wt, [base{,#0}]
      Load-Acquire Exclusive Halfword:從基址尋址的內存中加載半字,然后將其零擴展為 Wt。將物理地址記錄為獨占訪問。
    • LDAXP Wt, Wt2, [base{,#0}]
      Load-Acquire Exclusive Pair Registers:從基址尋址的存儲器中加載兩個字到 Wt 和 Wt2。將物理地址記錄為獨占訪問。
    • LDAXP Xt, Xt2, [base{,#0}]
      Load-Acquire Exclusive Pair Registers (extended):從基址尋址的內存中加載兩個雙字到 Xt 和 Xt2。將物理地址記錄為獨占訪問。
    • STLXR Ws, Wt, [base{,#0}]
      Store-Release Exclusive Register:將字從 Wt 存儲到由基址尋址的內存中,并將 Ws 設置為返回的獨占訪問狀態。
    • STLXR Ws, Xt, [base{,#0}]
      Store-Release Exclusive Register (extended):將雙字從 Xt 存儲到由基址尋址的內存中,并將 Ws 設置為返回的獨占訪問狀態。
    • STLXRB Ws, Wt, [base{,#0}]
      Store-Release Exclusive Byte:將字節從 Wt 存儲到由 base 尋址的內存中,并將 Ws 設置為返回的獨占訪問狀態。
    • STLXRH Ws, Xt|Wt, [base{,#0}]
      Store-Release Exclusive Halfword:將來自Wt的半字存儲到由base尋址的內存中,并將Ws設置為返回的獨占訪問狀態。
    • STLXP Ws, Wt, Wt2, [base{,#0}]
      Store-Release Exclusive Pair:將 Wt 和 Wt2 兩個字存儲到 base 尋址的內存中,并將 Ws 設置為返回的獨占訪問狀態。
    • STLXP Ws, Xt, Xt2, [base{,#0}]
      Store-Release Exclusive Pair (extended):將 Xt 和 Xt2 中的兩個雙字存儲到由基址尋址的內存中,并將 Ws 設置為返回的獨占訪問狀態。

    5.2.9 預取內存

    預取存儲器指令向存儲器系統發出信號,表明在不久的將來可能會從指定地址訪問存儲器。 內存系統可以通過采取預期在內存訪問確實發生時加快內存訪問的動作來做出響應,例如將指定地址預加載到一個或多個高速緩存中。 由于這些只是提示,因此 CPU 將任何或所有預取指令視為無操作是有效的。

    預取指令支持多種尋址模式,包括基址寄存器 Xn 或 SP,以及以下之一:

    • 縮放的 12 位無符號立即偏移量,沒有索引前和索引后選項。
    • 未縮放、9 位、有符號立即偏移量,沒有索引前和索引后選項。
    • 縮放或未縮放的 64 位寄存器偏移量。
    • 縮放或未縮放的 32 位擴展寄存器偏移量。

    此外:

    • 相對于 PC 的地址或標簽,在當前 PC 的 ±1MB 范圍內。
    • 如果偏移量被縮放,就好像訪問大小為 8 字節。

    PRFM <prfop>, addr|label
    預取內存,使用 提示,其中 是以下之一:
    PLDL1KEEP, PLDL1STRM, PLDL2KEEP, PLDL2STRM, PLDL3KEEP, PLDL3STRM
    PSTL1KEEP, PSTL1STRM, PSTL2KEEP, PSTL2STRM, PSTL3KEEP, PSTL3STRM

    <prfop> ::= <type><target><policy> | #uimm5
    ::= “PLD” (prefetch for load) | “PST” (prefetch for store)
    ::= “L1” (L1 cache) | “L2” (L2 cache) | “L3” (L3 cache)
    ::= “KEEP” (retained or temporal prefetch, i.e. allocate in cache normally)
    |“STRM” (streaming or non-temporal prefetch, i.e. memory used only once)
    #uimm5 ::= represents the unallocated hint encodings as a 5-bit immediate

    5.3 數據處理(立即數)

    數據處理(立即數)支持以下指令組:

    • 算術(立即)
    • 邏輯(立即)
    • 移動(立即)
    • 位域(操作)
    • 班次(立即)
    • 符號/零擴展

    5.3.1 算術(立即數)

    這些指令接受顯示為aimm的算術立即數,它被編碼為左移0或12位的12位無符號立即數。 在匯編語言中,這可以寫成:

    • #uimm12,LSL #sh
      12 位無符號立即數,顯式左移 0 或 12。
    • #uimm24
      24 位無符號立即數。 匯編器應確定 uimm12 的適當值,并以 0 或 12 的最低可能移位來生成請求的值; 如果該值在 bits<23:12> 和 bits<11:0> 中包含非零位,則將產生錯誤。
    • #nimm25
      “對程序員友好”的匯編器可以接受介于 -(224-1) 和 -1 之間的負立即數,導致它將請求的 ADD 操作轉換為 SUB,反之亦然,然后將立即數的絕對值編碼為 對于 uimm24。 然而,架構匯編語言不需要這種行為。

    反匯編程序通常應該使用 uimm24 形式輸出算術立即數,除非編碼的移位量不是可以使用的最低可能移位(例如,#0,LSL #12 不能使用 uimm24 形式輸出)。

    不設置條件標志的算術指令可以讀取和/或寫入當前堆棧指針,例如在函數序言或結尾調整堆棧指針; 標志設置指令可以讀取堆棧指針,但不能寫入。

    • ADD Wd|WSP, Wn|WSP, #aimm
      Add (immediate): Wd|WSP = Wn|WSP + aimm.
    • ADD Xd|SP, Xn|SP, #aimm
      Add (extended immediate): Xd|SP = Xn|SP + aimm.
    • ADDS Wd, Wn|WSP, #aimm
      Add and set flags (immediate): Wd = Wn|WSP + aimm, setting the condition flags.
    • ADDS Xd, Xn|SP, #aimm
      Add and set flags (extended immediate): Xd = Xn|SP + aimm, setting the condition flags.
    • SUB Wd|WSP, Wn|WSP, #aimm
      Subtract (immediate): Wd|WSP = Wn|WSP - aimm.
    • SUB Xd|SP, Xn|SP, #aimm
      Subtract (extended immediate): Xd|SP = Xn|SP - aimm.
    • SUBS Wd, Wn|WSP, #aimm
      Subtract and set flags (immediate): Wd = Wn|WSP - aimm, setting the condition flags.
    • SUBS Xd, Xn|SP, #aimm
      Subtract and set flags (extended immediate): Xd = Xn|SP - aimm, setting the condition flags.
    • CMP Wn|WSP, #aimm
      Compare (immediate): alias for SUBS WZR,Wn|WSP,#aimm.
    • CMP Xn|SP, #aimm
      Compare (extended immediate): alias for SUBS XZR,Xn|SP,#aimm.
    • CMN Wn|WSP, #aimm
      Compare negative (immediate): alias for ADDS WZR,Wn|WSP,#aimm.
    • CMN Xn|SP, #aimm
      Compare negative (extended immediate): alias for ADDS XZR,Xn|SP,#aimm.
    • MOV Wd|WSP, Wn|WSP
      Move (register): alias for ADD Wd|WSP,Wn|WSP,#0, but only when one or other of the registers is WSP. In other cases the ORR Wd,WZR,Wn instruction is used.
    • MOV Xd|SP, Xn|SP
      Move (extended register): alias for ADD Xd|SP,Xn|SP,#0, but only when one or other of the registers is SP. In other cases the ORR Xd,XZR,Xn instruction is used

    5.3.2 邏輯(立即數)

    邏輯立即數指令接受位掩碼立即數 bimm32 或 bimm64。 這樣的立即數包括在 2、4、8、16、32 或 64 位的元素內具有至少一個非零位和至少一個零位的單個連續序列; 然后元素被復制到整個寄存器寬度,或者這個值的按位反轉。 全零和全一的立即數可能不會被編碼為位掩碼立即數,因此匯編程序必須為具有這種立即數的邏輯指令生成錯誤,或者程序員友好的匯編程序可以將其轉換為其他指令 這達到了預期的結果。

    邏輯(立即)指令可以寫入當前堆棧指針,例如在函數序言中對齊堆棧指針。

    注意:除 ANDS 外,邏輯立即數指令不設置條件標志,但“有趣”的結果通常可以直接控制 CBZ、CBNZ、TBZ 或 TBNZ 條件分支。

    • AND Wd|WSP, Wn, #bimm32
      Bitwise AND (immediate): Wd|WSP = Wn AND bimm32.
    • AND Xd|SP, Xn, #bimm64
      Bitwise AND (extended immediate): Xd|SP = Xn AND bimm64.
    • - ANDS Wd, Wn, #bimm32
      Bitwise AND and Set Flags (immediate): Wd = Wn AND bimm32, setting N & Z condition flags based on the result and clearing the C & V flags.
      ANDS Xd, Xn, #bimm64

      Bitwise AND and Set Flags (extended immediate): Xd = Xn AND bimm64, setting N & Z condition flags based on the result and clearing the C & V flags.
    • EOR Wd|WSP, Wn, #bimm32
      Bitwise exclusive OR (immediate): Wd|WSP = Wn EOR bimm32.
    • EOR Xd|SP, Xn, #bimm64
      Bitwise exclusive OR (extended immediate): Xd|SP = Xn EOR bimm64.
    • ORR Wd|WSP, Wn, #bimm32
      Bitwise inclusive OR (immediate): Wd|WSP = Wn OR bimm32.
    • ORR Xd|SP, Xn, #bimm64
      Bitwise inclusive OR (extended immediate): Xd|SP = Xn OR bimm64.
    • MOVI Wd, #bimm32
      Move bitmask (immediate): alias for ORR Wd,WZR,#bimm32, but may disassemble as MOV, see below.
    • MOVI Xd, #bimm64
      Move bitmask (extended immediate): alias for ORR Xd,XZR,#bimm64, but may disassemble as MOV, see below.
    • TST Wn, #bimm32
      Bitwise test (immediate): alias for ANDS WZR,Wn,#bimm32.
    • TST Xn, #bimm64
      Bitwise test (extended immediate): alias for ANDS XZR,Xn,#bimm64

    5.3.3 Move (wide immediate)

    這些指令將 16 位立即數(或反轉立即數)插入目標寄存器中的 16 位對齊位置,其他目標寄存器位的值取決于所使用的變體。 移位量pos可以是寄存器大小的16的任意倍數。 省略“LSL #pos”意味著偏移 0。

    • MOVZ Wt, #uimm16{, LSL #pos}
      Move with Zero (immediate): Wt = LSL(uimm16, pos).Usually disassembled as MOV, see below.
    • MOVZ Xt, #uimm16{, LSL #pos}
      Move with Zero (extended immediate): Xt = LSL(uimm16, pos). Usually disassembled as MOV, see below.
    • MOVN Wt, #uimm16{, LSL #pos}
      Move with NOT (immediate): Wt = NOT(LSL(uimm16, pos)). Usually disassembled as MOV, see below.
    • MOVN Xt, #uimm16{, LSL #pos}
      Move with NOT (extended immediate): Xt = NOT(LSL(uimm16, pos)). Usually disassembled as MOV, see below.
    • MOVK Wt, #uimm16{, LSL #pos}
      Move with Keep (immediate): Wtpos+15:pos = uimm16
    • MOVK Xt, #uimm16{, LSL #pos}
      Move with Keep (extended immediate): Xtpos+15:pos = uimm16.

    5.3.3.1 Move (immediate)

    • MOV Wd, #simm32
      生成單個 MOVZ、MOVN 或 MOVI 指令的合成匯編指令,將 32 位立即值加載到寄存器 Wd 中。 如果這些指令中的一條指令不能創建立即數,則將導致匯編程序錯誤。 如果有選擇,那么為了確保可逆性,匯編器必須優先選擇 MOVZ 而不是 MOVN,以及 MOVZ 或 MOVN 而不是 MOVI。 反匯編程序可以將 MOVI、MOVZ 和 MOVN 作為 MOV 助記符輸出,除非 MOVI 具有可由 MOVZ 或 MOVN 指令生成的立即數,或 MOVN 具有可由 MOVZ 編碼的立即數,或 MOVZ/MOVN #0 具有除 LSL #0 以外的移位量,在這種情況下必須使用機器指令助記符。
    • MOV Xd, #simm64
      與 MOV 相同,但用于將 64 位立即數加載到寄存器 Xd 中。

    5.3.4 地址生成(Address Generation)

    • ADRP Xd, label
      頁面地址:符號擴展了一個 21 位偏移量,將其左移 12 位并將其與 PC 的值相加,并清除其低 12 位,將結果寫入寄存器 Xd。 這將計算包含標簽的 4KiB 對齊內存區域的基地址,并設計用于與提供標簽地址的低 12 位的加載、存儲或添加指令結合使用。 這允許使用兩條指令對 PC 的 ±4GiB 內的任何位置進行與位置無關的尋址,前提是動態重定位以 4KiB 的最小粒度完成(即標簽地址的底部 12 位不受重定位的影響)。 術語“頁面”是 4KiB 重定位粒度的簡寫,不一定與虛擬內存頁面大小有關。
    • ADR Xd, label
      地址:將 21 位有符號字節偏移量添加到程序計數器,將結果寫入寄存器 Xd。 用于計算 PC 的 ±1MiB 內任何位置的有效地址

    5.3.5 位域操作

    • BFM Wd, Wn, #r, #s
      Bitfield Move: if s>=r then Wds-r:0 = Wn<s:r>, else Wd<32+s-r,32-r> = Wn<s:0>.
      保持 Wd 中的其他位不變。
    • BFM Xd, Xn, #r, #s
      Bitfield Move: if s>=r then Xds-r:0 = Xn<s:r>, else Xd<64+s-r,64-r> = Xn<s:0>.
      保持 Xd 中的其他位不變。
    • SBFM Wd, Wn, #r, #s
      Signed Bitfield Move: if s>=r then Wds-r:0 = Wn<s:r>, else Wd<32+s-r,32-r> = Wn<s:0>.
      將目標位域左側的位設置為其最左側位的副本,并將右側的位設置為零。
    • SBFM Xd, Xn, #r, #s
      Signed Bitfield Move: if s>=r then Xds-r:0 = Xn<s:r>, else Xd<64+s-r,64-r> = Xn<s:0>.
      將目標位域左側的位設置為其最左側位的副本,并將右側的位設置為零。
    • UBFM Wd, Wn, #r, #s
      Unsigned Bitfield Move: if s>=r then Wds-r:0 = Wn<s:r>, else Wd<32+s-r,32-r> = Wn<s:0>.
      將目標位域左側和右側的位設置為零。
    • UBFM Xd, Xn, #r, #s
      Unsigned Bitfield Move: if s>=r then Xds-r:0 = Xn<s:r>, else Xd<32+s-r,32-r> = Xn<s:0>.
      將目標位域左側和右側的位設置為零。

    以下別名提供了更熟悉的位域插入和提取助記符,具有常規位域 lsb 和寬度操作數,必須滿足約束 lsb >= 0 && width >= 1 && lsb+width <= reg.size

    • BFI Wd, Wn, #lsb, #width
      Bitfield Insert: alias for BFM Wd,Wn,#((32-lsb)&31),#(width-1).
      Preferred for disassembly when s < r.
    • BFI Xd, Xn, #lsb, #width
      Bitfield Insert (extended): alias for BFM Xd,Xn,#((64-lsb)&63),#(width-1).
      Preferred for disassembly when s < r.
    • BFXIL Wd, Wn, #lsb, #width
      Bitfield Extract and Insert Low: alias for BFM Wd,Wn,#lsb,#(lsb+width-1).
      Preferred for disassembly when s >= r.
    • BFXIL Xd, Xn, #lsb, #width
      Bitfield Extract and Insert Low (extended): alias for BFM Xd,Xn,#lsb,#(lsb+width-1).
      Preferred for disassembly when s >= r.
    • SBFIZ Wd, Wn, #lsb, #width
      Signed Bitfield Insert in Zero: alias for) SBFM Wd,Wn,#((32-lsb)&31),#(width-1).
      Preferred for disassembly when s < r.
    • SBFIZ Xd, Xn, #lsb, #width
      Signed Bitfield Insert in Zero (extended): alias for SBFM Xd,Xn,#((64-lsb)&63),#(width-1).
      Preferred for disassembly when s < r.
    • SBFX Wd, Wn, #lsb, #width
      Signed Bitfield Extract: alias for SBFM Wd,Wn,#lsb,#(lsb+width-1).
      Preferred for disassembly when s >= r.
    • SBFX Xd, Xn, #lsb, #width
      Signed Bitfield Extract (extended): alias for SBFM Xd,Xn,#lsb,#(lsb+width-1).
      Preferred for disassembly when s >= r.
    • UBFIZ Wd, Wn, #lsb, #width
      Unsigned Bitfield Insert in Zero: alias for UBFM Wd,Wn,#((32-lsb)&31),#(width-1).
      Preferred for disassembly when s < r.
    • UBFIZ Xd, Xn, #lsb, #width
      Unsigned Bitfield Insert in Zero (extended): alias for UBFM Xd,Xn,#((64-lsb)&63),#(width-1).
      Preferred for disassembly when s < r.
    • UBFX Wd, Wn, #lsb, #width
      Unsigned Bitfield Extract: alias for UBFM Wd,Wn,#lsb,#(lsb+width-1).
      Preferred for disassembly when s >= r.
    • UBFX Xd, Xn, #lsb, #width
      Unsigned Bitfield Extract (extended): alias for UBFM Xd,Xn,#lsb,#(lsb+width-1).
      Preferred for disassembly when s >= r.

    5.3.6 提取(立即數)-- Extract (immediate)

    • EXTR Wd, Wn, Wm, #lsb
      Extract: Wd = Wn:Wm<lsb+31,lsb>. The bit position lsb must be in the range 0 to 31.
    • EXTR Xd, Xn, Xm, #lsb
      Extract (extended): Xd = Xn:Xm<lsb+63,lsb>. The bit position lsb must be in the range 0 to 63.

    5.3.7 Shift(立即數)

    所有立即移位和旋轉都是別名,使用 Bitfield 或 Extract 指令實現。 在所有情況下,立即移位量 uimm 必須在 0 到 (reg.size - 1) 的范圍內。

    • ASR Wd, Wn, #uimm
      Arithmetic Shift Right (immediate): alias for SBFM Wd,Wn,#uimm,#31.
    • ASR Xd, Xn, #uimm
      Arithmetic Shift Right (extended immediate): alias for SBFM Xd,Xn,#uimm,#63.
    • LSL Wd, Wn, #uimm
      Logical Shift Left (immediate): alias for UBFM Wd,Wn,#((32-uimm)&31),#(31-uimm).
    • LSL Xd, Xn, #uimm
      Logical Shift Left (extended immediate): alias for UBFM Xd,Xn,#((64-uimm)&63),#(63-uimm)
    • LSR Wd, Wn, #uimm
      Logical Shift Left (immediate): alias for UBFM Wd,Wn,#uimm,#31.
    • LSR Xd, Xn, #uimm
      Logical Shift Left (extended immediate): alias for UBFM Xd,Xn,#uimm,#31.
    • ROR Wd, Wm, #uimm
      Rotate Right (immediate): alias for EXTR Wd,Wm,Wm,#uimm.
    • ROR Xd, Xm, #uimm
      Rotate Right (extended immediate): alias for EXTR Xd,Xm,Xm,#uimm.

    5.3.8 符號/零擴展

    • SXT[BH] Wd, Wn
      Signed Extend Byte|Halfword: alias for SBFM Wd,Wn,#0,#7|15.
    • SXT[BHW] Xd, Wn
      Signed Extend Byte|Halfword|Word (extended): alias for SBFM Xd,Xn,#0,#7|15|31.
    • UXT[BH] Wd, Wn
      Unsigned Extend Byte|Halfword: alias for UBFM Wd,Wn,#0,#7|15.
    • UXT[BHW] Xd, Wn
      Unsigned Extend Byte|Halfword|Word (extended): alias for UBFM Xd,Xn,#0,#7|15|31.

    5.4 數據處理(寄存器)

    數據處理(寄存器)支持以下指令組:

    • 算術(移位寄存器)
    • 算術(擴展寄存器)
    • 邏輯(移位寄存器)
    • 算術(未移位寄存器)
    • 移位(寄存器)
    • 按位運算

    5.4.1 算術(移位寄存器)

    移位寄存器指令在執行算術運算之前對最終源操作數值應用可選移位。 指令的寄存器大小控制在右移或旋轉時將新位輸入到中間結果的位置(即位 63 或 31)。

    移位運算符 LSL、ASR 和 LSR 接受 0 到 reg.size - 1 范圍內的立即移位量。

    省略移位運算符意味著“LSL #0”(即沒有移位),并且“LSL #0”不應由反匯編程序輸出; 必須輸出所有其他零位移。

    寄存器名稱 SP 和 WSP 不能與此類指令一起使用,請參閱第 5.4.2 節

    • ADD Wd, Wn, Wm{, ashift #imm}
      Add (register): Wd = Wn + ashift(Wm, imm).
    • ADD Xd, Xn, Xm{, ashift #imm}
      Add (extended register): Xd = Xn + ashift(Xm, imm).
    • ADDS Wd, Wn, Wm{, ashift #imm}
      Add and Set Flags (register): Wd = Wn + ashift(Wm, imm), setting condition flags.
    • ADDS Xd, Xn, Xm{, ashift #imm}
      Add and Set Flags (extended register): Xd = Xn + ashift(Xm, imm), setting condition flags.
    • SUB Wd, Wn, Wm{, ashift #imm}
      Subtract (register): Wd = Wn - ashift(Wm, imm).
    • SUB Xd, Xn, Xm{, ashift #imm}
      Subtract (extended register): Xd = Xn - ashift(Xm, imm).
    • SUBS Wd, Wn, Wm{, ashift #imm}
      Subtract and Set Flags (register): Wd = Wn - ashift(Wm, imm), setting condition flags.
    • SUBS Xd, Xn, Xm{, ashift #imm}
      Subtract and Set Flags (extended register): Xd = Xn - ashift(Xm, imm), setting condition flags.
    • CMN Wn, Wm{, ashift #imm}
      Compare Negative (register): alias for ADDS WZR, Wn, Wm{, ashift #imm}.
    • CMN Xn, Xm{, ashift #imm}
      Compare Negative (extended register): alias for ADDS XZR, Xn, Xm{, ashift #imm}.
    • CMP Wn, Wm{, ashift #imm}
      Compare (register): alias for SUBS WZR, Wn, Wm{,ashift #imm}.
    • CMP Xn, Xm{, ashift #imm}
      Compare (extended register): alias for SUBS XZR, Xn, Xm{, ashift #imm}.
    • NEG Wd, Wm{, ashift #imm}
      Negate: alias for SUB Wd, WZR, Wm{, ashift #imm}.
    • NEG Xd, Xm{, ashift #imm}
      Negate (extended): alias for SUB Xd, XZR, Xm{, ashift #imm}.
    • NEGS Wd, Wm{, ashift #imm}
      Negate and Set Flags: alias for SUBS Wd, WZR, Wm{, ashift #imm}.
    • NEGS Xd, Xm{, ashift #imm}
      Negate and Set Flags (extended): alias for SUBS Xd, XZR, Xm{, ashift #imm}

    5.4.2 算術(擴展寄存器)

    擴展寄存器指令與移位寄存器形式的不同之處在于:
    (一)。 非標志設置變體允許將堆棧指針用作目標寄存器和第一源寄存器中的一個或兩個。 標志設置變體只允許堆棧指針作為第一個源寄存器。
    (2)。 它們提供了第二個源寄存器值的一部分的可選符號或零擴展,然后是可選的立即左移 1 和 4(含)。

    “擴展移位”由強制擴展運算符 SXTB、SXTH、SXTW、SXTX、UXTB、UXTH、UXTW 或 UXTX 描述,其后是可選的左移量。如果省略移位量,則默認為零,并且反匯編程序不應輸出零移位量。

    對于 64 位指令形式,操作符 UXTX 和 SXTX(首選 UXTX)都執行第二個源寄存器的“無操作”擴展,然后是可選的移位。當且僅當 UXTX 在至少一個操作數中與寄存器名稱 SP 結合使用時,則首選別名 LSL,在這種情況下,運算符和移位量都可以省略,表示“LSL #0”。

    類似地,對于 32 位指令形式,運算符 UXTW 和 SXTW(首選 UXTW)都執行第二個源寄存器的“無操作”擴展,然后是可選的移位。當且僅當 UXTW 與至少一個操作數中的寄存器名稱 WSP 結合使用時,別名 LSL 是首選。在這些指令的 64 位形式中,除了(可能省略)UXTX/LSL 和 SXTX 運算符之外,最后的寄存器操作數寫為 Wm。例如:

    CMP X4, W5, SXTW ADD X1, X2, W3, UXTB #2 SUB SP, SP, X1 // SUB SP, SP, X1, UXTX #0
    • ADD Wd|WSP, Wn|WSP, Wm, extend {#imm}
      Add (register, extending): Wd|WSP = Wn|WSP + LSL(extend(Wm),imm).
    • ADD Xd|SP, Xn|SP, Wm, extend {#imm}
      Add (extended register, extending): Xd|SP = Xn|SP + LSL(extend(Wm),imm).
    • ADD Xd|SP, Xn|SP, Xm{, UXTX|LSL #imm}
      Add (extended register, extending): Xd|SP = Xn|SP + LSL(Xm,imm).
    • ADDS Wd, Wn|WSP, Wm, extend {#imm}
      Add and Set Flags (register, extending): Wd = Wn|WSP + LSL(extend(Wm),imm), setting the condition flags.
    • ADDS Xd, Xn|SP, Wm, extend {#imm}
      Add and Set Flags (extended register, extending): Xd = Xn|SP + LSL(extend(Wm),imm), setting the condition flags.
    • ADDS Xd, Xn|SP, Xm{, UXTX|LSL #imm}
      Add and Set Flags (extended register, extending): Xd = Xn|SP + LSL(Xm,imm), setting the condition flags.
    • SUB Wd|WSP, Wn|WSP, Wm, extend {#imm}
      Subtract (register, extending): Wd|WSP = Wn|WSP - LSL(extend(Wm),imm).
    • SUB Xd|SP, Xn|SP, Wm, extend {#imm}
      Subtract (extended register, extending): Xd|SP = Xn|SP - LSL(extend(Wm),imm).
    • SUB Xd|SP, Xn|SP, Xm{, UXTX|LSL #imm}
      Subtract (extended register, extending): Xd|SP = Xn|SP - LSL(Xm,imm).
    • SUBS Wd, Wn|WSP, Wm, extend {#imm}
      Subtract and Set Flags (register, extending): Wd = Wn|WSP - LSL(extend(Wm),imm), setting the condition flags.
    • SUBS Xd, Xn|SP, Wm, extend {#imm}
      Subtract and Set Flags (extended register, extending): Xd = Xn|SP - LSL(extend(Wm),imm), setting the condition flags.
    • SUBS Xd, Xn|SP, Xm{, UXTX|LSL #imm}
      Subtract and Set Flags (extended register, extending): Xd = Xn|SP - LSL(Xm,imm), setting the condition flags.
    • CMN Wn|WSP, Wm, extend {#imm}
      Compare Negative (register, extending): alias for ADDS WZR,Wn,Wm,extend {#imm}.
    • CMN Xn|SP, Wm, extend {#imm}
      Compare Negative (extended register, extending): alias for ADDS XZR,Xn,Wm,extend {#imm}.
    • CMN Xn|SP, Xm{, UXTX|LSL #imm}
      Compare Negative (extended register, extending): alias for ADDS XZR,Xn,Xm{,UXTX|LSL #imm}.
    • CMP Wn|WSP, Wm, extend {#imm}
      Compare (register, extending): alias for SUBS WZR,Wn,Wm,extend {#imm}.
    • CMP Xn|SP, Wm, extend {#imm}
      Compare (extended register, extending): alias for SUBS XZR,Xn,Wm,extend {#imm}.
    • CMP Xn|SP, Xm{, UXTX|LSL #imm}
      Compare (extended register, extending): alias for SUBS XZR,Xn,Xm{,UXTX|LSL #imm}.

    5.4.3 邏輯(移位寄存器)

    邏輯(移位寄存器)指令在執行主操作之前將可選的移位運算符應用于其最終源操作數。 指令的寄存器大小控制在右移或旋轉時將新位輸入到中間結果的位置(即位 63 或 31)。

    移位運算符 LSL、ASR、LSR 和 ROR 接受 0 到 reg.size - 1 范圍內的立即移位量。

    省略移位運算符意味著“LSL #0”(即沒有移位),并且反匯編程序不應輸出“LSL #0” - 但是必須輸出所有其他零移位。

    注意:除了 ANDS 和 BICS 邏輯指令不設置條件標志,但“有趣”的結果通常可以直接控制 CBZ、CBNZ、TBZ 或 TBNZ 條件分支。

    • AND Wd, Wn, Wm{, lshift #imm}
      Bitwise AND (register): Wd = Wn AND lshift(Wm, imm).
    • AND Xd, Xn, Xm{, lshift #imm}
      Bitwise AND (extended register): Xd = Xn AND lshift(Xm, imm).
    • ANDS Wd, Wn, Wm{, lshift #imm}
      Bitwise AND and Set Flags (register): Wd = Wn AND lshift(Wm, imm), setting N & Z condition flags based on the result and clearing the C & V flags.
    • ANDS Xd, Xn, Xm{, lshift #imm}
      Bitwise AND and Set Flags (extended register): Xd = Xn AND lshift(Xm, imm), setting N & Z condition flags based on the result and clearing the C & V flags.
    • BIC Wd, Wn, Wm{, lshift #imm}
      Bit Clear (register): Wd = Wn AND NOT(lshift(Wm, imm)).
    • BIC Xd, Xn, Xm{, lshift #imm}
      Bit Clear (extended register): Xd = Xn AND NOT(lshift(Xm, imm)).
    • BICS Wd, Wn, Wm{, lshift #imm}
      Bit Clear and Set Flags (register): Wd = Wn AND NOT(lshift(Wm, imm)), setting N & Z condition flags based on the result and clearing the C & V flags.
    • BICS Xd, Xn, Xm{, lshift #imm}
      Bit Clear and Set Flags (extended register): Xd = Xn AND NOT(lshift(Xm, imm)), setting N & Z condition flags based on the result and clearing the C & V flags.
    • EON Wd, Wn, Wm{, lshift #imm}
      Bitwise exclusive OR NOT (register): Wd = Wn EOR NOT(lshift(Wm, imm)).
    • EON Xd, Xn, Xm{, lshift #imm}
      Bitwise exclusive OR NOT (extended register): Xd = Xn EOR NOT(lshift(Xm, imm)).
    • EOR Wd, Wn, Wm{, lshift #imm}
      Bitwise exclusive OR (register): Wd = Wn EOR lshift(Wm, imm).
    • EOR Xd, Xn, Xm{, lshift #imm}
      Bitwise exclusive OR (extended register): Xd = Xn EOR lshift(Xm, imm).
    • ORR Wd, Wn, Wm{, lshift #imm}
      Bitwise inclusive OR (register): Wd = Wn OR lshift(Wm, imm).
    • ORR Xd, Xn, Xm{, lshift #imm}
      Bitwise inclusive OR (extended register): Xd = Xn OR lshift(Xm, imm).
    • ORN Wd, Wn, Wm{, lshift #imm}
      Bitwise inclusive OR NOT (register): Wd = Wn OR NOT(lshift(Wm, imm)).
    • ORN Xd, Xn, Xm{, lshift #imm}
      Bitwise inclusive OR NOT (extended register): Xd = Xn OR NOT(lshift(Xm, imm)).
    • MOV Wd, Wm
      Move (register): alias for ORR Wd,WZR,Wm.
    • MOV Xd, Xm
      Move (extended register): alias for ORR Xd,XZR,Xm.
    • MVN Wd, Wm{, lshift #imm}
      Move NOT (register): alias for ORN Wd,WZR,Wm{,lshift #imm}.
    • MVN Xd, Xm{, lshift #imm}
      Move NOT (extended register): alias for ORN Xd,XZR,Xm{,lshift #imm}.
    • TST Wn, Wm{, lshift #imm}
      Bitwise Test (register): alias for ANDS WZR,Wn,Wm{,lshift #imm}.
    • TST Xn, Xm{, lshift #imm}
      Bitwise Test (extended register): alias for ANDS XZR,Xn,Xm{,lshift #imm}.

    5.4.4 變體位(Variable Shift)

    Wm 或 Xm 中的可變移位量為正,并以寄存器大小為模。 例如,Xm 包含值 65 的擴展 64 位移位將導致位移 (65 MOD 64) = 1 位。 機器指令如下:

    • ASRV Wd, Wn, Wm
      Arithmetic Shift Right Variable: Wd = ASR(Wn, Wm & 0x1f).
    • ASRV Xd, Xn, Xm
      Arithmetic Shift Right Variable (extended): Xd = ASR(Xn, Xm & 0x3f).
    • LSLV Wd, Wn, Wm
      Logical Shift Left Variable: Wd = LSL(Wn, Wm & 0x1f).
    • LSLV Xd, Xn, Xm
      Logical Shift Left Variable (extended register): Xd = LSL(Xn, Xm & 0x3f).
    • LSRV Wd, Wn, Wm
      Logical Shift Right Variable: Wd = LSR(Wn, Wm & 0x1f).
    • LSRV Xd, Xn, Xm
      Logical Shift Right Variable (extended): Xd = LSR(Xn, Xm & 0x3f).
    • RORV Wd, Wn, Wm
      Rotate Right Variable: Wd = ROR(Wn, Wm & 0x1f).
    • RORV Xd, Xn, Xm
      Rotate Right Variable (extended): Xd = ROR(Xn, Xm & 0x3f)

    然而,“可變移位”機器指令有一組首選的“移位(寄存器)”別名,它們與別處描述的移位(立即)別名相匹配:

    • ASR Wd, Wn, Wm
      Arithmetic Shift Right (register): preferred alias for ASRV Wd, Wn, Wm.
    • ASR Xd, Xn, Xm
      Arithmetic Shift Right (extended register): preferred alias for ASRV Xd, Xn, Xm.
    • LSL Wd, Wn, Wm
      Logical Shift Left (register): preferred alias for LSLV Wd, Wn, Wm.
    • LSL Xd, Xn, Xm
      Logical Shift Left (extended register): preferred alias for LSLV Xd, Xn, Xm.
    • LSR Wd, Wn, Wm
      Logical Shift Right (register): preferred alias for LSRV Wd, Wn, Wm.
    • LSR Xd, Xn, Xm
      Logical Shift Right (extended register): preferred alias for LSRV Xd, Xn, Xm
    • ROR Wd, Wn, Wm
      Rotate Right (register): preferred alias for RORV Wd, Wn, Wm.
    • ROR Xd, Xn, Xm
      Rotate Right (extended register): preferred alias for RORV Xd, Xn, Xm.

    5.4.5 位運算

    • CLS Wd, Wm
      Count Leading Sign Bits: 將 Wd 設置為 Wm 中最高位之后的連續位數,與最高位相同。 該計數不包括最高位本身,因此結果將在 0 到 31 的范圍內。
    • CLS Xd, Xm
      Count Leading Sign Bits (extended): 將 Xd 設置為 Xm 中最高位之后的連續位數,與最高位相同。 該計數不包括最高位本身,因此結果將在 0 到 63 的范圍內。
    • CLZ Wd, Wm
      Count Leading Zeros: 將 Wd 設置為 Wm 最高有效端的二進制零的數量。 結果將在 0 到 32 的范圍內。
    • CLZ Xd, Xm
      Count Leading Zeros: (擴展)將 Xd 設置為 Xm 最高有效端的二進制零的數量。 結果將在 0 到 64 的范圍內。
    • RBIT Wd, Wm
      Reverse Bits: reverses the 32 bits from Wm, writing to Wd.
    • RBIT Xd, Xm
      Reverse Bits (extended): reverses the 64 bits from Xm, writing to Xd.
    • REV Wd, Wm
      Reverse Bytes: reverses the 4 bytes in Wm, writing to Wd.
    • REV Xd, Xm
      Reverse Bytes (extended): reverses 8 bytes in Xm, writing to Xd.
    • REV16 Wd, Wm
      Reverse Bytes in Halfwords: reverses the 2 bytes in each 16-bit element of Wm, writing to Wd.
    • REV16 Xd, Xm
      Reverse Bytes in Halfwords (extended): reverses the 2 bytes in each 16-bit element of Xm, writing to Xd.
    • REV32 Xd, Xm
      Reverse Bytes in Words (extended): reverses the 4 bytes in each 32-bit element of Xm, writing to Xd

    5.4.6 條件數據處理

    這些指令支持兩個未移位的源寄存器,條件標志作為第三個源。 請注意,指令不是有條件地執行的:始終寫入目標寄存器。

    • ADC Wd, Wn, Wm
      Add with Carry: Wd = Wn + Wm + C.
    • ADC Xd, Xn, Xm
      Add with Carry (extended): Xd = Xn + Xm + C
    • ADCS Wd, Wn, Wm
      Add with Carry and Set Flags: Wd = Wn + Wm + C, setting the condition flags.
    • ADCS Xd, Xn, Xm
      Add with Carry and Set Flags (extended): Xd = Xn + Xm + C, setting the condition flags.
    • CSEL Wd, Wn, Wm, cond
      Conditional Select: Wd = if cond then Wn else Wm.
    • CSEL Xd, Xn, Xm, cond
      Conditional Select (extended): Xd = if cond then Xn else Xm.
    • CSINC Wd, Wn, Wm, cond
      Conditional Select Increment: Wd = if cond then Wn else Wm+1.
    • CSINC Xd, Xn, Xm, cond
      Conditional Select Increment (extended): Xd = if cond then Xn else Xm+1.
    • CSINV Wd, Wn, Wm, cond
      Conditional Select Invert: Wd = if cond then Wn else NOT(Wm).
    • CSINV Xd, Xn, Xm, cond
      Conditional Select Invert (extended): Xd = if cond then Xn else NOT(Xm).
    • CSNEG Wd, Wn, Wm, cond
      Conditional Select Negate: Wd = if cond then Wn else -Wm.
    • CSNEG Xd, Xn, Xm, cond
      Conditional Select Negate (extended): Xd = if cond then Xn else -Xm.
    • CSET Wd, cond
      Conditional Set: Wd = if cond then 1 else 0. Alias for CSINC Wd,WZR,WZR,invert(cond).
    • CSET Xd, cond
      Conditional Set (extended): Xd = if cond then 1 else 0. Alias for CSINC Xd,XZR,XZR,invert(cond)
    • CSETM Wd, cond
      Conditional Set Mask: Wd = if cond then -1 else 0. Alias for CSINV Wd,WZR,WZR,invert(cond).
    • CSETM Xd, cond
      Conditional Set Mask (extended): Xd = if cond then -1 else 0. Alias for CSINV Xd,WZR,WZR,invert(cond).
    • CINC Wd, Wn, cond
      Conditional Increment: Wd = if cond then Wn+1 else Wn. Alias for CSINC Wd,Wn,Wn,invert(cond).
    • CINC Xd, Xn, cond
      Conditional Increment (extended): Xd = if cond then Xn+1 else Xn. Alias for CSINC Xd,Xn,Xn,invert(cond).
    • CINV Wd, Wn, cond
      Conditional Invert: Wd = if cond then NOT(Wn) else Wn. Alias for CSINV Wd,Wn,Wn,invert(cond).
    • CINV Xd, Xn, cond
      Conditional Invert (extended): Xd = if cond then NOT(Xn) else Xn. Alias for CSINV Xd,Xn,Xn,invert(cond).
    • CNEG Wd, Wn, cond
      Conditional Negate: Wd = if cond then -Wn else Wn. Alias for CSNEG Wd,Wn,Wn,invert(cond).
    • CNEG Xd, Xn, cond
      Conditional Negate (extended): Xd = if cond then -Xn else Xn. Alias for CSNEG Xd,Xn,Xn,invert(cond).
    • SBC Wd, Wn, Wm
      Subtract with Carry: Wd = Wn - Wm - 1 + C.
    • SBC Xd, Xn, Xm
      Subtract with Carry (extended): Xd = Xn - Xm - 1 + C.
    • SBCS Wd, Wn, Wm
      Subtract with Carry and Set Flags: Wd = Wn - Wm - 1 + C , setting the condition flags.
    • SBCS Xd, Xn, Xm
      Subtract with Carry and Set Flags (extended): Xd = Xn - Xm - 1 + C , setting the condition flags.
    • NGC Wd, Wm
      Negate with Carry: Wd = -Wm - 1 + C. Alias for SBC Wd,WZR,Wm.
    • NGC Xd, Xm
      Negate with Carry (extended): Xd = -Xm - 1 + C. Alias for SBC Xd,XZR,Xm.
    • NGCS Wd, Wm
      Negate with Carry and Set Flags: Wd = -Wm - 1 + C, setting the condition flags. Alias for SBCS Wd,WZR,Wm.
    • NGCS Xd, Xm
      Negate with Carry and Set Flags (extended): Xd = -Xm - 1 + C, setting the condition flags. Alias for SBCS Xd,XZR,Xm.

    5.4.7 條件比較

    條件比較為 NZCV 條件標志提供“條件選擇”,如果輸入條件為真,則將標志設置為比較結果,如果輸入條件為假,則將標志設置為立即值。 有寄存器和立即數形式,立即數形式接受一個小的 5 位無符號值。

    #uimm4 操作數是用于在輸入條件為假時設置 NZCV 標志的位掩碼,第 3 位是 N 標志的新值,第 2 位是 Z 標志,第 1 位是 C 標志,第 0 位是 V 標志

    • CCMN Wn, Wm, #uimm4, cond
      Conditional Compare Negative (register):
      NZCV = if cond then CMP(Wn,-Wm) else uimm4.
    • CCMN Xn, Xm, #uimm4, cond
      Conditional Compare Negative (extended register):
      NZCV = if cond then CMP(Xn,-Xm) else uimm4.
    • CCMN Wn, #uimm5, #uimm4, cond
      Conditional Compare Negative (immediate):
      NZCV = if cond then CMP(Wn,-uimm5) else uimm4.
    • CCMN Xn, #uimm5, #uimm4, cond
      Conditional Compare Negative (extended immediate):
      NZCV = if cond then CMP(Xn,-uimm5) else uimm4.
    • CCMP Wn, Wm, #uimm4, cond
      Conditional Compare (register):
      NZCV = if cond then CMP(Wn,Wm) else uimm4.
    • CCMP Xn, Xm, #uimm4, cond
      Conditional Compare (extended register):
      NZCV = if cond then CMP(Xn,Xm) else uimm4.
    • CCMP Wn, #uimm5, #uimm4, cond
      Conditional Compare (immediate):
      NZCV = if cond then CMP(Wn,uimm5) else uimm4.
    • CCMP Xn, #uimm5, #uimm4, cond
      Conditional Compare (extended immediate):
      NZCV = if cond then CMP(Xn,uimm5) else uimm4

    5.5 整數乘法/除法

    5.5.1 乘法

    • MADD Wd, Wn, Wm, Wa
      Multiply-Add: Wd = Wa + (Wn × Wm).
    • MADD Xd, Xn, Xm, Xa
      Multiply-Add (extended): Xd = Xa + (Xn × Xm.)
    • MSUB Wd, Wn, Wm, Wa
      Multiply-Subtract: Wd = Wa – (Wn × Wm).
    • MSUB Xd, Xn, Xm, Xa
      Multiply-Subtract (extended): Xd = Xa – (Xn × Xm).
    • MNEG Wd, Wn, Wm
      Multiply-Negate: Wd = –(Wn × Wm). Alias for MSUB Wd, Wn, Wm, WZR.
    • MNEG Xd, Xn, Xm
      Multiply-Negate (extended): Xd = –(Xn × Xm). Alias for MSUB Xd, Xn, Xm, XZR.
    • MUL Wd, Wn, Wm
      Multiply: Wd = Wn × Wm. Alias for MADD Wd, Wn, Wm, WZR.
    • MUL Xd, Xn, Xm
      Multiply (extended): Xd = Xn × Xm. Alias for MADD Xd, Xn, Xm, XZR.
    • SMADDL Xd, Wn, Wm, Xa
      Signed Multiply-Add Long: Xd = Xa + (Wn × Wm), treating source operands as signed.
    • SMSUBL Xd, Wn, Wm, Xa
      Signed Multiply-Subtract Long: Xd = Xa – (Wn × Wm), treating source operands as signed.
    • SMNEGL Xd, Wn, Wm
      Signed Multiply-Negate Long: Xd = -(Wn × Wm), treating source operands as signed. Alias for SMSUBL Xd, Wn, Wm, XZR.
    • SMULL Xd, Wn, Wm
      Signed Multiply Long: Xd = Wn × Wm, treating source operands as signed. Alias for SMADDL Xd, Wn, Wm, XZR.
    • SMULH Xd, Xn, Xm
      Signed Multiply High: Xd = (Xn × Xm)<127:64>, treating source operands as signed.
    • UMADDL Xd, Wn, Wm, Xa
      Unsigned Multiply-Add Long: Xd = Xa + (Wn × Wm), treating source operands as unsigned.
    • UMSUBL Xd, Wn, Wm, Xa
      Unsigned Multiply-Subtract Long: Xd = Xa – (Wn × Wm), treating source operands as unsigned.
    • UMNEGL Xd, Wn, Wm
      Unsigned Multiply-Negate Long: Xd = -(Wn × Wm), treating source operands as unsigned. Alias for UMSUBL Xd, Wn, Wm, XZR.
    • UMULL Xd, Wn, Wm
      Unsigned Multiply Long: Xd = Wn × Wm, treating source operands as unsigned. Alias for UMADDL Xd, Wn, Wm, XZR.
    • UMULH Xd, Xn, Xm
      Unsigned Multiply High: Xd = (Xn × Xm)<127:64>, treating source operands as unsigned

    5.5.2 除法

    整數除法指令計算 (分子÷分母) 并提供商,該商向零舍入。 然后可以使用 MSUB 將余數計算為分子–(商*分母)
    操作說明。

    如果執行有符號整數除法 (INT_MIN ÷ -1),其中 INT_MIN 是所選寄存器大小中可表示的最大負整數值,則結果將溢出有符號整數范圍。 不會產生此溢出的指示,寫入目標寄存器的結果將為 INT_MIN。

    注意:除法指令不會在除以零時生成陷阱,而是將零寫入目標寄存器。

    • SDIV Wd, Wn, Wm
      Signed Divide: Wd = Wn ÷ Wm, treating source operands as signed.
    • SDIV Xd, Xn, Xm
      Signed Divide (extended): Xd = Xn ÷ Xm, treating source operands as signed.
    • UDIV Wd, Wn, Wm
      Unsigned Divide: Wd = Wn ÷ Wm, treating source operands as unsigned.
    • UDIV Xd, Xn, Xm
      Unsigned Divide (extended): Xd = Xn ÷ Xm, treating source operands as unsigned.

    5.6 標量浮點

    5.6.1 浮點/SIMD 標量內存訪問

    5.6.2 浮點移動(寄存器)

    5.6.3 浮點移動(立即)

    5.6.4 浮點轉換

    5.6.5 浮點四舍五入到積分

    5.6.6 浮點算術(1 個來源)

    5.6.7 浮點算術(2 個來源)

    5.6.8 浮點最小值/最大值

    5.6.9 浮點乘加

    5.6.10 浮點比較

    5.6.11 浮點條件選擇

    5.7 高級SIMD

    5.7.1 概述

    5.7.2 高級 SIMD 助記符

    5.7.3 數據移動

    5.7.4 向量算術

    5.7.5 標量算術

    5.7.6 向量加寬/收窄算法

    5.7.7 標量加寬/收窄算法

    5.7.8 向量一元算術

    5.7.9 標量一元算術

    5.7.10 逐元素算術

    5.7.11 標量逐元素算術

    5.7.12 向量置換

    5.7.13 向量立即數

    5.7.14 向量移位(立即)

    5.7.15 標量移位(立即)

    5.7.16 向量浮點/整數轉換

    5.7.17 標量浮點/整數轉換

    5.7.18 向量縮減(跨車道)

    5.7.19 向量成對算術

    5.7.20 標量歸約(成對)

    5.7.21 向量表查找

    5.7.22 向量加載存儲結構

    5.7.23 AArch32 等效高級 SIMD 助記符

    5.7.24 加密擴展

    5.8 系統說明

    系統指令分為以下:

    • 異常生成指令
    • 系統寄存器訪問
    • 系統管理
    • hints
    • Barriers和CLREX

    5.8.1 異常的產生和返回

    5.8.1.1 Non-debug exceptions
    • SVC #uimm16
      生成針對異常級別 1(系統)的異常,在 uimm16 中具有 16 位有效負載。
    • HVC #uimm16
      生成針對異常級別 2(管理程序)的異常,在 uimm16 中具有 16 位有效負載。
    • SMC #uimm16
      生成針對異常級別 3(安全監視器)的異常,在 uimm16 中具有 16 位有效負載。
    • ERET
      異常返回:從當前異常級別的 SPSR_ELn 寄存器重構處理器狀態,并跳轉到 ELR_ELn 中的地址。
    5.8.1.2 Debug exceptions
    • BRK #uimm16
      監視模式軟件斷點:異常路由到在 EL1 或 EL2 中執行的調試監視器,在 uimm16 中具有 16 位有效負載。
    • HLT #uimm16
      暫停模式軟件斷點:如果啟用則進入暫停模式調試狀態,否則視為未分配。 在 uimm16 中具有 16 位有效負載。
    • DCPS1 {#uimm16}
      調試 將處理器狀態更改為 EL1(僅在暫停模式調試狀態下有效),可選的 16 位立即數 uimm16 默認為零并被硬件忽略。
    • DCPS2 {#uimm16}
      Debug 將處理器狀態更改為 EL2(僅在暫停模式調試狀態下有效),可選的 16 位立即數 uimm16 默認為零并被硬件忽略。
    • DCPS3 {#uimm16}
      Debug 將處理器狀態更改為 EL3(僅在暫停模式調試狀態下有效),可選的 16 位立即數 uimm16 默認為零并被硬件忽略。
    • DRPS
      Debug Restore Processor State:將處理器恢復到當前異常級別的SPSR_ELn寄存器中記錄的異常級別和模式(僅在暫停模式調試狀態下有效)

    5.8.2 系統寄存器訪問

    • MRS Xt, <system_register>
      將 <system_register> 移動到 Xt,其中 <system_register> 是系統寄存器名稱,或者對于實現定義的寄存器,使用“S”形式的名稱,例如“S3_4_c13_c9_7”。
    • MSR <system_register>, Xt
      將 Xt 移動到 <system_register>,其中 <system_register> 是系統寄存器名稱,或者對于實現定義的寄存器,使用“S”形式的名稱,例如“S3_4_c13_c9_7”…
    • MSR DAIFClr, #uimm4
      使用 uimm4 作為位掩碼來選擇清除一個或多個 DAIF 異常掩碼位:位 3 選擇 D 掩碼,位 2 選擇 A 掩碼,位 1 選擇 I 掩碼,位 0 選擇 F 掩碼。
    • MSR DAIFSet, #uimm4
      使用 uimm4 作為位掩碼來選擇一個或多個 DAIF 異常掩碼位的設置:位 3 選擇 D 掩碼,位 2 選擇 A 掩碼,位 1 選擇 I 掩碼,位 0 選擇 F 掩碼。
    • MSR SPSel, #uimm4
      使用 uimm4 作為控制值來選擇堆棧指針:如果設置位 0,則選擇當前異常級別的堆棧指針,如果位 0 清零,則選擇共享 EL0 堆棧指針。 uimm4 的位 1 到 3 被保留并且應該為零。

    5.8.3 系統管理

    如果 SYS 指令的操作數與下面 <xx_op> 表中的條目匹配,則關聯的別名是首選反匯編。 否則應使用 SYS 或 SYSL 助記符,允許生成和反匯編任意實現定義的系統指令

    • SYS #op1, Cn, Cm, #op2{, Xt}
    • SYSL Xt, #op1, Cn, Cm, #op2
    • IC <ic_op>{, Xt} 指令cache維護操作指令
    • DC <dc_op>, Xt 數據cache維護操作指令
    • AT <at_op>, Xt 地址翻譯指令
    • TLBI <tlbi_op>{, Xt} TLB維護操作指令

    5.8.4 hints

    • NOP
    • YIELD
    • WFE
    • WFI
    • SEV
    • SEVL
    • HINT #uimm7

    5.8.5 Barriers和CLREX

    • CLREX {#uimm4}
    • DSB |#uimm4
    • DMB |#uimm4
    • ISB {SY|#uimm4}

    6 A32和T32指令集

    6.1 部分棄用 的之類

    6.2 加載-獲取/存儲-釋放

    6.2.1 非排他性

    6.2.2 獨占

    6.3 VFP 標量浮點

    6.3.1 浮點條件選擇

    6.3.2 浮點minNum/maxNum

    6.3.3 浮點轉換(浮點到整數)

    6.3.4 浮點轉換(半精度到/從雙精度)

    6.3.5 浮點取整

    6.4 高級 SIMD 浮點

    6.4.1 浮點minNum/maxNum

    6.4.2 浮點轉換

    6.4.3 浮點取整到積分

    6.5 加密擴展

    6.6 系統說明

    6.6.1 停止調試

    6.6.2 Barriers 和 Hints

    總結

    以上是生活随笔為你收集整理的ARMV8/ARMV9指令集概述(翻译)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    av小次郎收藏 | 久久综合久久自在自线精品自 | 少妇厨房愉情理9仑片视频 | 性色欲情网站iwww九文堂 | 亚洲综合伊人久久大杳蕉 | 激情内射日本一区二区三区 | 图片区 小说区 区 亚洲五月 | 嫩b人妻精品一区二区三区 | 国产69精品久久久久app下载 | 精品久久久久久人妻无码中文字幕 | 久久久国产一区二区三区 | 午夜福利不卡在线视频 | 中文字幕人妻丝袜二区 | 精品偷拍一区二区三区在线看 | 无码一区二区三区在线 | 国产明星裸体无码xxxx视频 | 国产三级久久久精品麻豆三级 | 久久亚洲日韩精品一区二区三区 | 色老头在线一区二区三区 | 亚洲日本va中文字幕 | 色诱久久久久综合网ywww | 一本色道久久综合狠狠躁 | 亚洲国产精品无码久久久久高潮 | 午夜福利一区二区三区在线观看 | 啦啦啦www在线观看免费视频 | 午夜成人1000部免费视频 | 欧美老妇交乱视频在线观看 | 色五月丁香五月综合五月 | 少妇被粗大的猛进出69影院 | 国精品人妻无码一区二区三区蜜柚 | 97久久国产亚洲精品超碰热 | 国产亲子乱弄免费视频 | 狠狠综合久久久久综合网 | 中文字幕+乱码+中文字幕一区 | 久久 国产 尿 小便 嘘嘘 | 中文字幕无码免费久久99 | 无码国内精品人妻少妇 | 国产美女精品一区二区三区 | 日本免费一区二区三区最新 | 性欧美大战久久久久久久 | 国产精品99爱免费视频 | 国产乱人偷精品人妻a片 | 西西人体www44rt大胆高清 | 欧美怡红院免费全部视频 | 亚洲色欲色欲欲www在线 | 亚洲精品久久久久avwww潮水 | 国产特级毛片aaaaaaa高清 | 国产精品丝袜黑色高跟鞋 | 精品人妻av区 | 两性色午夜视频免费播放 | 日韩在线不卡免费视频一区 | 色诱久久久久综合网ywww | 成人精品天堂一区二区三区 | 亚洲色欲久久久综合网东京热 | 午夜理论片yy44880影院 | 偷窥日本少妇撒尿chinese | 日韩在线不卡免费视频一区 | а√天堂www在线天堂小说 | 国产成人精品无码播放 | 免费无码的av片在线观看 | 丰满人妻被黑人猛烈进入 | 少女韩国电视剧在线观看完整 | 午夜熟女插插xx免费视频 | 日韩亚洲欧美精品综合 | 扒开双腿吃奶呻吟做受视频 | 色情久久久av熟女人妻网站 | 鲁大师影院在线观看 | 亚洲日韩一区二区三区 | 老子影院午夜精品无码 | 丰满少妇人妻久久久久久 | 任你躁在线精品免费 | 日本乱偷人妻中文字幕 | 亚洲国产欧美国产综合一区 | 日产精品高潮呻吟av久久 | 亚洲国产一区二区三区在线观看 | 色妞www精品免费视频 | 丰满肥臀大屁股熟妇激情视频 | 亚洲日韩乱码中文无码蜜桃臀网站 | 未满成年国产在线观看 | 国产午夜视频在线观看 | 亚洲综合无码一区二区三区 | 青春草在线视频免费观看 | 九九在线中文字幕无码 | 日日碰狠狠躁久久躁蜜桃 | 欧美熟妇另类久久久久久多毛 | 人妻少妇精品无码专区二区 | 久久熟妇人妻午夜寂寞影院 | 久久综合九色综合欧美狠狠 | 日韩精品无码一本二本三本色 | 国产av一区二区三区最新精品 | 亚洲娇小与黑人巨大交 | 图片区 小说区 区 亚洲五月 | 亚洲中文无码av永久不收费 | 国产精品-区区久久久狼 | 综合网日日天干夜夜久久 | 天堂无码人妻精品一区二区三区 | 亚洲精品综合一区二区三区在线 | 乱码av麻豆丝袜熟女系列 | 老熟女重囗味hdxx69 | 国产电影无码午夜在线播放 | 精品少妇爆乳无码av无码专区 | 少妇性l交大片欧洲热妇乱xxx | 丰满妇女强制高潮18xxxx | 成人动漫在线观看 | 亚洲欧美日韩综合久久久 | 中文字幕无码日韩专区 | 欧美刺激性大交 | 国产熟妇另类久久久久 | 熟妇人妻激情偷爽文 | 给我免费的视频在线观看 | 99精品无人区乱码1区2区3区 | 成人精品一区二区三区中文字幕 | 精品一二三区久久aaa片 | 午夜熟女插插xx免费视频 | 国产亚洲日韩欧美另类第八页 | 亚洲国产欧美日韩精品一区二区三区 | 日韩成人一区二区三区在线观看 | 亚洲国产欧美日韩精品一区二区三区 | 国产女主播喷水视频在线观看 | 亚洲精品成人av在线 | 中文字幕无码免费久久9一区9 | 国产精品va在线观看无码 | 熟妇人妻无码xxx视频 | 人妻有码中文字幕在线 | 一本无码人妻在中文字幕免费 | 中文字幕无码av波多野吉衣 | 亚洲色成人中文字幕网站 | 午夜精品久久久内射近拍高清 | 极品尤物被啪到呻吟喷水 | 亚洲成av人片在线观看无码不卡 | 天堂一区人妻无码 | 性欧美熟妇videofreesex | 国产人妻久久精品二区三区老狼 | 性史性农村dvd毛片 | 999久久久国产精品消防器材 | 色婷婷综合激情综在线播放 | 欧美人妻一区二区三区 | 国产特级毛片aaaaaaa高清 | 亚洲人成网站色7799 | 精品欧美一区二区三区久久久 | 又大又紧又粉嫩18p少妇 | 国产精品美女久久久 | 在线 国产 欧美 亚洲 天堂 | 亚洲日韩一区二区三区 | 国内精品人妻无码久久久影院 | 婷婷色婷婷开心五月四房播播 | 国产成人一区二区三区在线观看 | 极品尤物被啪到呻吟喷水 | 77777熟女视频在线观看 а天堂中文在线官网 | 国产区女主播在线观看 | 水蜜桃av无码 | 国产精品久久久久久无码 | 国产乱人无码伦av在线a | 精品偷自拍另类在线观看 | 国产精品亚洲综合色区韩国 | 亚洲另类伦春色综合小说 | 亚洲 日韩 欧美 成人 在线观看 | 无码帝国www无码专区色综合 | 欧美喷潮久久久xxxxx | 日日摸天天摸爽爽狠狠97 | 精品成在人线av无码免费看 | 国产亚洲人成在线播放 | 国产精品怡红院永久免费 | 精品人妻人人做人人爽夜夜爽 | 久久久久99精品成人片 | 成人精品天堂一区二区三区 | 男女性色大片免费网站 | 无码一区二区三区在线 | 久久久久久久久888 | 中文字幕人妻无码一夲道 | 国产成人精品必看 | 色情久久久av熟女人妻网站 | 人妻天天爽夜夜爽一区二区 | 亚洲欧美色中文字幕在线 | 中文亚洲成a人片在线观看 | 日韩av无码一区二区三区不卡 | 2019nv天堂香蕉在线观看 | 少妇性l交大片 | 亚洲aⅴ无码成人网站国产app | 日产国产精品亚洲系列 | 久久久精品456亚洲影院 | 鲁一鲁av2019在线 | 色综合久久网 | 强开小婷嫩苞又嫩又紧视频 | 性色欲网站人妻丰满中文久久不卡 | 中文字幕无码人妻少妇免费 | 婷婷色婷婷开心五月四房播播 | 成人性做爰aaa片免费看不忠 | 亚洲小说春色综合另类 | 天天做天天爱天天爽综合网 | 日本成熟视频免费视频 | 国产内射爽爽大片视频社区在线 | 亚洲成熟女人毛毛耸耸多 | 国产av无码专区亚洲a∨毛片 | 日本www一道久久久免费榴莲 | 亚洲七七久久桃花影院 | 国产乱人伦av在线无码 | 日本乱偷人妻中文字幕 | 亚洲欧美中文字幕5发布 | 久久亚洲中文字幕无码 | 青青青爽视频在线观看 | 午夜免费福利小电影 | 亚洲中文字幕无码中文字在线 | 影音先锋中文字幕无码 | 国产精品成人av在线观看 | 少妇厨房愉情理9仑片视频 | 日韩欧美中文字幕公布 | 又大又黄又粗又爽的免费视频 | 97夜夜澡人人爽人人喊中国片 | 特级做a爰片毛片免费69 | 人妻天天爽夜夜爽一区二区 | 无遮挡啪啪摇乳动态图 | 欧美老熟妇乱xxxxx | 久久久久人妻一区精品色欧美 | 亚洲日韩av一区二区三区四区 | 日韩精品a片一区二区三区妖精 | 骚片av蜜桃精品一区 | 欧美熟妇另类久久久久久多毛 | 国产真人无遮挡作爱免费视频 | 国产精品久久久av久久久 | 男女性色大片免费网站 | 天堂在线观看www | 理论片87福利理论电影 | 欧美大屁股xxxxhd黑色 | 久久熟妇人妻午夜寂寞影院 | 亚洲a无码综合a国产av中文 | 18禁止看的免费污网站 | 国产香蕉尹人综合在线观看 | 呦交小u女精品视频 | 国内精品久久久久久中文字幕 | 欧美日韩一区二区免费视频 | 一本色道久久综合亚洲精品不卡 | 青青青爽视频在线观看 | 国产麻豆精品一区二区三区v视界 | 少妇一晚三次一区二区三区 | 欧美人与善在线com | 久久亚洲日韩精品一区二区三区 | 国产女主播喷水视频在线观看 | 精品国产aⅴ无码一区二区 | 日本熟妇乱子伦xxxx | 亚洲第一网站男人都懂 | 日本护士毛茸茸高潮 | 国产精品成人av在线观看 | 国产精品沙发午睡系列 | 国产精品美女久久久 | 国产熟女一区二区三区四区五区 | 丰满岳乱妇在线观看中字无码 | 狂野欧美性猛xxxx乱大交 | 国内精品人妻无码久久久影院蜜桃 | 亚洲日韩av一区二区三区四区 | 精品偷拍一区二区三区在线看 | 精品一区二区三区波多野结衣 | 亚洲综合无码久久精品综合 | 国产真实伦对白全集 | 欧美老人巨大xxxx做受 | 狠狠色欧美亚洲狠狠色www | 国产成人综合在线女婷五月99播放 | 欧美一区二区三区 | 99精品无人区乱码1区2区3区 | 国产人成高清在线视频99最全资源 | 久久精品中文闷骚内射 | 亚拍精品一区二区三区探花 | 东京热无码av男人的天堂 | 在线播放无码字幕亚洲 | 国产av剧情md精品麻豆 | 两性色午夜视频免费播放 | 中文无码成人免费视频在线观看 | 小泽玛莉亚一区二区视频在线 | 欧美人与善在线com | 狂野欧美激情性xxxx | 国产高清av在线播放 | 国产成人精品必看 | 色综合久久久久综合一本到桃花网 | 性色欲网站人妻丰满中文久久不卡 | 国产福利视频一区二区 | 又大又黄又粗又爽的免费视频 | 在线观看国产午夜福利片 | 国产欧美亚洲精品a | 小sao货水好多真紧h无码视频 | 国产乱人伦av在线无码 | 男女猛烈xx00免费视频试看 | 日欧一片内射va在线影院 | 中国大陆精品视频xxxx | 中文字幕无码日韩欧毛 | 亚洲热妇无码av在线播放 | 久久综合香蕉国产蜜臀av | 日韩欧美成人免费观看 | 无码av中文字幕免费放 | 国产精品内射视频免费 | 亚洲gv猛男gv无码男同 | 少妇性俱乐部纵欲狂欢电影 | 99久久久无码国产aaa精品 | 熟女少妇人妻中文字幕 | 最近中文2019字幕第二页 | 亚洲第一无码av无码专区 | 亚洲の无码国产の无码步美 | 亚洲色无码一区二区三区 | 呦交小u女精品视频 | 精品久久久无码中文字幕 | 7777奇米四色成人眼影 | 无码毛片视频一区二区本码 | 国产激情精品一区二区三区 | 免费人成在线观看网站 | 精品国产一区二区三区四区在线看 | 人人妻人人澡人人爽精品欧美 | 精品午夜福利在线观看 | 老熟女乱子伦 | 亚洲男女内射在线播放 | 亚洲 a v无 码免 费 成 人 a v | 欧美xxxx黑人又粗又长 | 无码精品人妻一区二区三区av | 日韩人妻系列无码专区 | 一本加勒比波多野结衣 | 亚洲理论电影在线观看 | 国产精品久久久av久久久 | 精品无码成人片一区二区98 | 免费无码午夜福利片69 | 国产激情无码一区二区 | 亚洲无人区午夜福利码高清完整版 | 亚洲午夜无码久久 | 国产精品成人av在线观看 | 亚洲啪av永久无码精品放毛片 | 人人超人人超碰超国产 | 国产精品久久国产精品99 | 国内综合精品午夜久久资源 | 色五月五月丁香亚洲综合网 | 国产精品对白交换视频 | 精品国精品国产自在久国产87 | 少妇愉情理伦片bd | 国产成人人人97超碰超爽8 | 老熟女重囗味hdxx69 | 国产亚洲精品久久久闺蜜 | 成年女人永久免费看片 | 四虎影视成人永久免费观看视频 | 夫妻免费无码v看片 | 国产成人无码a区在线观看视频app | 久久国产精品精品国产色婷婷 | 婷婷五月综合激情中文字幕 | 国产熟妇高潮叫床视频播放 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 国产激情精品一区二区三区 | 婷婷丁香六月激情综合啪 | 岛国片人妻三上悠亚 | 亚洲欧美日韩综合久久久 | 全球成人中文在线 | 蜜桃臀无码内射一区二区三区 | 欧美人妻一区二区三区 | 亚洲大尺度无码无码专区 | 鲁大师影院在线观看 | 人人澡人人妻人人爽人人蜜桃 | 永久黄网站色视频免费直播 | 草草网站影院白丝内射 | 一本一道久久综合久久 | 扒开双腿吃奶呻吟做受视频 | 真人与拘做受免费视频一 | 亚洲精品一区三区三区在线观看 | 一本久道久久综合婷婷五月 | 无码国产乱人伦偷精品视频 | 影音先锋中文字幕无码 | 久久精品国产一区二区三区 | 亚洲а∨天堂久久精品2021 | 老子影院午夜精品无码 | 日韩亚洲欧美中文高清在线 | 精品国产精品久久一区免费式 | 国内丰满熟女出轨videos | 最新版天堂资源中文官网 | 国语自产偷拍精品视频偷 | 动漫av一区二区在线观看 | 领导边摸边吃奶边做爽在线观看 | 欧美自拍另类欧美综合图片区 | 亚洲毛片av日韩av无码 | 亚洲の无码国产の无码影院 | 99久久99久久免费精品蜜桃 | 色综合久久网 | 亚洲s色大片在线观看 | 蜜桃av抽搐高潮一区二区 | 亚洲日本在线电影 | 99久久久无码国产精品免费 | 色综合久久久久综合一本到桃花网 | 国产亚洲人成a在线v网站 | 97精品人妻一区二区三区香蕉 | 性做久久久久久久久 | а√资源新版在线天堂 | 少妇愉情理伦片bd | 伊人久久大香线蕉亚洲 | 精品乱子伦一区二区三区 | 高清不卡一区二区三区 | 任你躁国产自任一区二区三区 | 欧美真人作爱免费视频 | 人妻无码αv中文字幕久久琪琪布 | 国产农村妇女高潮大叫 | 成人综合网亚洲伊人 | 国产精品久久久久久亚洲毛片 | 97色伦图片97综合影院 | a国产一区二区免费入口 | 野狼第一精品社区 | 人妻夜夜爽天天爽三区 | 国产精品无码一区二区桃花视频 | 国内揄拍国内精品少妇国语 | 一区二区三区乱码在线 | 欧洲 | 国产精品久久久久久亚洲影视内衣 | 久久国产精品精品国产色婷婷 | 国产超碰人人爽人人做人人添 | 蜜臀aⅴ国产精品久久久国产老师 | 中文无码成人免费视频在线观看 | 国产美女极度色诱视频www | 中文字幕人成乱码熟女app | 国内少妇偷人精品视频免费 | 中文字幕无码av波多野吉衣 | 日本大乳高潮视频在线观看 | 亚洲爆乳精品无码一区二区三区 | 国产在线一区二区三区四区五区 | 久久99精品国产.久久久久 | 精品乱码久久久久久久 | 少妇无码一区二区二三区 | 夜夜夜高潮夜夜爽夜夜爰爰 | 国产精品久久久久久亚洲影视内衣 | 夜夜夜高潮夜夜爽夜夜爰爰 | 亚洲国产精品美女久久久久 | 强奷人妻日本中文字幕 | 亚洲va欧美va天堂v国产综合 | 男女下面进入的视频免费午夜 | 亚洲国产欧美在线成人 | 国产综合在线观看 | 欧美老妇交乱视频在线观看 | 男人的天堂2018无码 | 色情久久久av熟女人妻网站 | 成 人影片 免费观看 | 国产尤物精品视频 | 欧美熟妇另类久久久久久多毛 | 日本免费一区二区三区最新 | 少妇愉情理伦片bd | 亚洲毛片av日韩av无码 | 色综合视频一区二区三区 | 色婷婷久久一区二区三区麻豆 | 天堂亚洲2017在线观看 | www国产亚洲精品久久网站 | 国产成人综合美国十次 | 性生交大片免费看女人按摩摩 | 熟妇人妻激情偷爽文 | 成人av无码一区二区三区 | 少妇久久久久久人妻无码 | 内射巨臀欧美在线视频 | 久久精品99久久香蕉国产色戒 | 国产在线精品一区二区高清不卡 | 欧美成人免费全部网站 | 精品国产一区二区三区av 性色 | 内射巨臀欧美在线视频 | 久久精品国产99久久6动漫 | 中文字幕+乱码+中文字幕一区 | 人人爽人人爽人人片av亚洲 | 色一情一乱一伦一视频免费看 | 天堂а√在线中文在线 | 欧美熟妇另类久久久久久不卡 | 亚洲精品美女久久久久久久 | 日本成熟视频免费视频 | 377p欧洲日本亚洲大胆 | 最近免费中文字幕中文高清百度 | 午夜熟女插插xx免费视频 | 国产精品高潮呻吟av久久 | 欧美黑人巨大xxxxx | 中文字幕av日韩精品一区二区 | 亚洲爆乳无码专区 | 欧美日韩亚洲国产精品 | 精品夜夜澡人妻无码av蜜桃 | 综合激情五月综合激情五月激情1 | ass日本丰满熟妇pics | 亚洲中文字幕va福利 | 精品成人av一区二区三区 | 亚洲成色www久久网站 | 性欧美熟妇videofreesex | аⅴ资源天堂资源库在线 | 国产午夜视频在线观看 | 国产熟女一区二区三区四区五区 | 蜜臀aⅴ国产精品久久久国产老师 | 亚洲欧美日韩国产精品一区二区 | 88国产精品欧美一区二区三区 | 少妇人妻大乳在线视频 | 国产精品久久国产精品99 | 玩弄人妻少妇500系列视频 | 亚洲综合无码一区二区三区 | 少妇性俱乐部纵欲狂欢电影 | 99麻豆久久久国产精品免费 | 99视频精品全部免费免费观看 | 无码吃奶揉捏奶头高潮视频 | 色一情一乱一伦 | 亚洲色偷偷偷综合网 | 亚洲综合精品香蕉久久网 | 国产精品怡红院永久免费 | 精品厕所偷拍各类美女tp嘘嘘 | 国产在线一区二区三区四区五区 | 亚洲色www成人永久网址 | 亚洲日韩av一区二区三区四区 | 中文字幕色婷婷在线视频 | 国产人妻精品一区二区三区 | 波多野结衣高清一区二区三区 | 麻花豆传媒剧国产免费mv在线 | 捆绑白丝粉色jk震动捧喷白浆 | 麻豆人妻少妇精品无码专区 | 自拍偷自拍亚洲精品10p | 国产99久久精品一区二区 | 国产人妻精品一区二区三区 | 色婷婷综合激情综在线播放 | 国产精品毛多多水多 | 好男人社区资源 | 久久久久国色av免费观看性色 | 亚洲爆乳大丰满无码专区 | 国产免费久久精品国产传媒 | 国产精品久久久久久无码 | 精品成在人线av无码免费看 | 国产精品无码mv在线观看 | av人摸人人人澡人人超碰下载 | 精品久久久无码人妻字幂 | 国内精品九九久久久精品 | 亚洲午夜久久久影院 | 成人免费无码大片a毛片 | 免费人成在线视频无码 | 中文字幕日韩精品一区二区三区 | 久久久av男人的天堂 | 国产手机在线αⅴ片无码观看 | 麻豆果冻传媒2021精品传媒一区下载 | 久久成人a毛片免费观看网站 | www国产亚洲精品久久网站 | 波多野42部无码喷潮在线 | 国产区女主播在线观看 | 欧洲熟妇精品视频 | 在线成人www免费观看视频 | 麻豆国产人妻欲求不满 | 大色综合色综合网站 | 日韩视频 中文字幕 视频一区 | 国产精品久久久久久久影院 | 精品无码一区二区三区爱欲 | 国产精品高潮呻吟av久久 | 男人扒开女人内裤强吻桶进去 | 亚洲自偷自偷在线制服 | 国产精品内射视频免费 | 国产片av国语在线观看 | 无码人妻丰满熟妇区毛片18 | 亚拍精品一区二区三区探花 | 国产做国产爱免费视频 | 曰本女人与公拘交酡免费视频 | 欧洲熟妇精品视频 | 日本精品人妻无码77777 天堂一区人妻无码 | 欧美三级不卡在线观看 | 九九热爱视频精品 | 免费中文字幕日韩欧美 | 精品国偷自产在线 | 亚洲s码欧洲m码国产av | 精品aⅴ一区二区三区 | 日本va欧美va欧美va精品 | 久久精品女人天堂av免费观看 | 久久人人97超碰a片精品 | 男女爱爱好爽视频免费看 | 无码福利日韩神码福利片 | 天天躁日日躁狠狠躁免费麻豆 | 中文久久乱码一区二区 | 国产亲子乱弄免费视频 | 又大又紧又粉嫩18p少妇 | 成人免费无码大片a毛片 | 亚洲人成人无码网www国产 | 四虎影视成人永久免费观看视频 | 久久国内精品自在自线 | 久久精品国产大片免费观看 | 丰满少妇人妻久久久久久 | 又色又爽又黄的美女裸体网站 | 一本色道婷婷久久欧美 | 亚洲国产精品毛片av不卡在线 | 97无码免费人妻超级碰碰夜夜 | 三上悠亚人妻中文字幕在线 | 性欧美疯狂xxxxbbbb | 一区二区传媒有限公司 | 色综合久久久久综合一本到桃花网 | 男女超爽视频免费播放 | 狂野欧美性猛交免费视频 | 久久99精品久久久久久动态图 | 成熟人妻av无码专区 | 任你躁在线精品免费 | 成人精品一区二区三区中文字幕 | 国产色精品久久人妻 | 日本xxxx色视频在线观看免费 | 人妻尝试又大又粗久久 | 亚洲精品一区二区三区四区五区 | 综合人妻久久一区二区精品 | 青青青手机频在线观看 | 麻豆av传媒蜜桃天美传媒 | 国产免费无码一区二区视频 | 欧美丰满老熟妇xxxxx性 | 无码国产激情在线观看 | 67194成是人免费无码 | 欧美性黑人极品hd | 精品久久久无码中文字幕 | 精品国产一区二区三区四区 | 自拍偷自拍亚洲精品被多人伦好爽 | 亚洲 欧美 激情 小说 另类 | 蜜桃av抽搐高潮一区二区 | 丰满护士巨好爽好大乳 | 天堂а√在线地址中文在线 | 亚洲人成影院在线无码按摩店 | 99久久久无码国产精品免费 | 亚洲成色www久久网站 | 久久综合激激的五月天 | 又粗又大又硬毛片免费看 | 亚洲欧洲中文日韩av乱码 | 亚洲精品一区二区三区婷婷月 | 免费无码肉片在线观看 | 综合网日日天干夜夜久久 | 成人试看120秒体验区 | 中文字幕无码免费久久99 | 国产精品久久精品三级 | 欧美人与物videos另类 | a在线观看免费网站大全 | 国产一精品一av一免费 | 久久无码中文字幕免费影院蜜桃 | 亚洲精品中文字幕久久久久 | 国产成人综合在线女婷五月99播放 | 成 人影片 免费观看 | 亚洲男人av香蕉爽爽爽爽 | 在教室伦流澡到高潮hnp视频 | 久久久中文久久久无码 | 亚洲自偷精品视频自拍 | 国产口爆吞精在线视频 | а√资源新版在线天堂 | 免费人成网站视频在线观看 | 国产激情一区二区三区 | 婷婷五月综合激情中文字幕 | 国内老熟妇对白xxxxhd | 一二三四在线观看免费视频 | 欧美乱妇无乱码大黄a片 | 欧美人与牲动交xxxx | 国产两女互慰高潮视频在线观看 | 老司机亚洲精品影院 | 大肉大捧一进一出视频出来呀 | 女高中生第一次破苞av | 熟女体下毛毛黑森林 | 欧美高清在线精品一区 | 中文字幕中文有码在线 | 欧美人与动性行为视频 | 亚洲精品一区二区三区在线 | 国产内射爽爽大片视频社区在线 | 亚洲啪av永久无码精品放毛片 | 天堂亚洲2017在线观看 | 日产精品高潮呻吟av久久 | 99久久无码一区人妻 | 国产又爽又猛又粗的视频a片 | 四虎国产精品一区二区 | 亚洲国产精品毛片av不卡在线 | 丰满少妇熟乱xxxxx视频 | 国产区女主播在线观看 | 高清国产亚洲精品自在久久 | 国产精品无码一区二区三区不卡 | 思思久久99热只有频精品66 | 欧美阿v高清资源不卡在线播放 | 国产免费久久精品国产传媒 | 在线精品亚洲一区二区 | 国产精品久久久久久久9999 | 水蜜桃色314在线观看 | 无码精品国产va在线观看dvd | 国语自产偷拍精品视频偷 | aⅴ在线视频男人的天堂 | 欧美三级a做爰在线观看 | 国产色xx群视频射精 | 亚洲国产精品成人久久蜜臀 | 人人妻人人澡人人爽人人精品 | 亚洲午夜无码久久 | 性欧美大战久久久久久久 | 强开小婷嫩苞又嫩又紧视频 | 永久免费观看美女裸体的网站 | 97夜夜澡人人爽人人喊中国片 | 色婷婷香蕉在线一区二区 | av小次郎收藏 | 77777熟女视频在线观看 а天堂中文在线官网 | 亚洲国产高清在线观看视频 | 亚洲成a人一区二区三区 | 亚洲日韩av片在线观看 | 樱花草在线社区www | 无码人妻久久一区二区三区不卡 | 97夜夜澡人人双人人人喊 | 7777奇米四色成人眼影 | 未满小14洗澡无码视频网站 | 男女超爽视频免费播放 | 97久久国产亚洲精品超碰热 | 久久午夜无码鲁丝片 | 中文字幕人妻无码一区二区三区 | 日日摸日日碰夜夜爽av | 在线欧美精品一区二区三区 | 精品夜夜澡人妻无码av蜜桃 | 国产人妻人伦精品 | 国内精品久久毛片一区二区 | 久久综合狠狠综合久久综合88 | 国产精品视频免费播放 | 老熟妇乱子伦牲交视频 | 久久97精品久久久久久久不卡 | 亚洲精品久久久久久久久久久 | 亚洲一区二区三区 | 日本精品少妇一区二区三区 | 久久伊人色av天堂九九小黄鸭 | 丰满肥臀大屁股熟妇激情视频 | 99久久人妻精品免费一区 | 国产精品手机免费 | 欧美老妇交乱视频在线观看 | 天堂无码人妻精品一区二区三区 | 亚洲精品一区三区三区在线观看 | 5858s亚洲色大成网站www | 图片区 小说区 区 亚洲五月 | 中文字幕中文有码在线 | 又色又爽又黄的美女裸体网站 | 亚洲a无码综合a国产av中文 | 精品无码一区二区三区的天堂 | 青青草原综合久久大伊人精品 | 国产97人人超碰caoprom | 色 综合 欧美 亚洲 国产 | 亚洲精品成人福利网站 | 精品国产aⅴ无码一区二区 | 97无码免费人妻超级碰碰夜夜 | 欧美大屁股xxxxhd黑色 | 日本va欧美va欧美va精品 | 成人三级无码视频在线观看 | 亚洲色偷偷男人的天堂 | 蜜臀av在线播放 久久综合激激的五月天 | 黑森林福利视频导航 | 国产精品二区一区二区aⅴ污介绍 | 国产在线无码精品电影网 | 亚洲日本va午夜在线电影 | 国产综合色产在线精品 | 亚洲一区二区三区偷拍女厕 | 亚洲精品www久久久 | 日本免费一区二区三区最新 | 狠狠色丁香久久婷婷综合五月 | 奇米影视7777久久精品人人爽 | 又湿又紧又大又爽a视频国产 | 少妇高潮喷潮久久久影院 | 捆绑白丝粉色jk震动捧喷白浆 | 天堂亚洲2017在线观看 | 亚洲人成人无码网www国产 | 俺去俺来也www色官网 | 一本久道久久综合狠狠爱 | 国产午夜无码视频在线观看 | 精品无码一区二区三区的天堂 | 少妇厨房愉情理9仑片视频 | 国产精品无码一区二区桃花视频 | 欧洲美熟女乱又伦 | 99久久精品国产一区二区蜜芽 | 亚洲成av人综合在线观看 | 99精品久久毛片a片 | 乱码午夜-极国产极内射 | 人人澡人人透人人爽 | 色噜噜亚洲男人的天堂 | 亚洲人亚洲人成电影网站色 | 极品嫩模高潮叫床 | 丰满人妻被黑人猛烈进入 | 97人妻精品一区二区三区 | 小泽玛莉亚一区二区视频在线 | 日本一区二区三区免费高清 | 极品尤物被啪到呻吟喷水 | 装睡被陌生人摸出水好爽 | 沈阳熟女露脸对白视频 | 高清国产亚洲精品自在久久 | 久久这里只有精品视频9 | 一二三四在线观看免费视频 | 十八禁真人啪啪免费网站 | 国产精品久久久一区二区三区 | www国产亚洲精品久久网站 | 亚洲 欧美 激情 小说 另类 | 亚洲精品久久久久中文第一幕 | 人妻少妇精品视频专区 | 久久五月精品中文字幕 | 久久午夜夜伦鲁鲁片无码免费 | 欧美一区二区三区视频在线观看 | 男人扒开女人内裤强吻桶进去 | 思思久久99热只有频精品66 | 精品午夜福利在线观看 | 荫蒂添的好舒服视频囗交 | 性欧美熟妇videofreesex | 成人片黄网站色大片免费观看 | 亚洲熟悉妇女xxx妇女av | 成 人影片 免费观看 | 精品无码成人片一区二区98 | 国产精品国产自线拍免费软件 | 久久精品人妻少妇一区二区三区 | 久久久中文字幕日本无吗 | 麻豆国产丝袜白领秘书在线观看 | 亚洲综合色区中文字幕 | 亚洲无人区午夜福利码高清完整版 | 俄罗斯老熟妇色xxxx | 亚洲最大成人网站 | 国产精品人妻一区二区三区四 | 国产香蕉尹人综合在线观看 | 日产精品高潮呻吟av久久 | 波多野结衣一区二区三区av免费 | 国产午夜亚洲精品不卡下载 | 日本熟妇大屁股人妻 | 亚洲中文字幕av在天堂 | 精品乱码久久久久久久 | 蜜桃视频插满18在线观看 | 国产精品亚洲а∨无码播放麻豆 | 欧美人与牲动交xxxx | 欧美性猛交内射兽交老熟妇 | 女人被男人躁得好爽免费视频 | 成人综合网亚洲伊人 | 国产又爽又黄又刺激的视频 | 无码av中文字幕免费放 | 黑人巨大精品欧美黑寡妇 | 国产成人亚洲综合无码 | 免费播放一区二区三区 | 国产福利视频一区二区 | 久久久av男人的天堂 | 成人一在线视频日韩国产 | 色一情一乱一伦 | 免费观看黄网站 | 女人被爽到呻吟gif动态图视看 | 亚洲午夜久久久影院 | 99久久久无码国产aaa精品 | 欧美日韩一区二区免费视频 | 人人妻人人澡人人爽欧美一区 | 午夜理论片yy44880影院 | 中文字幕无码av波多野吉衣 | 久久综合九色综合欧美狠狠 | 三上悠亚人妻中文字幕在线 | 人妻少妇精品无码专区二区 | 美女扒开屁股让男人桶 | 国产 精品 自在自线 | 精品国产一区二区三区四区在线看 | 国产亚洲精品久久久久久国模美 | 精品无码国产一区二区三区av | 欧美怡红院免费全部视频 | 中文字幕av无码一区二区三区电影 | 无码午夜成人1000部免费视频 | 久久久久亚洲精品中文字幕 | 中文无码成人免费视频在线观看 | 国产xxx69麻豆国语对白 | 无码纯肉视频在线观看 | 精品国产福利一区二区 | 无码人妻精品一区二区三区不卡 | 中文字幕无线码免费人妻 | 日本精品久久久久中文字幕 | 香蕉久久久久久av成人 | 亚洲国产欧美日韩精品一区二区三区 | 亚洲一区二区三区 | 国产午夜精品一区二区三区嫩草 | 国产极品视觉盛宴 | 男人的天堂av网站 | 少妇愉情理伦片bd | 久久亚洲精品中文字幕无男同 | 中文字幕av伊人av无码av | 婷婷综合久久中文字幕蜜桃三电影 | 无人区乱码一区二区三区 | 国产精品久久久久久亚洲毛片 | 久久久久成人片免费观看蜜芽 | 狂野欧美性猛交免费视频 | 丝袜人妻一区二区三区 | 亚洲国产欧美国产综合一区 | 高清无码午夜福利视频 | 亚洲日本va中文字幕 | 国产精品igao视频网 | 人人妻人人澡人人爽人人精品浪潮 | 丰满护士巨好爽好大乳 | 亚洲综合另类小说色区 | 六十路熟妇乱子伦 | 强伦人妻一区二区三区视频18 | 国产精品久久久 | 亚洲色欲色欲欲www在线 | 国产猛烈高潮尖叫视频免费 | 成人欧美一区二区三区黑人 | 牲欲强的熟妇农村老妇女 | 国产欧美熟妇另类久久久 | 久久午夜夜伦鲁鲁片无码免费 | 成人性做爰aaa片免费看不忠 | 人人爽人人澡人人人妻 | 久热国产vs视频在线观看 | 久久久久久a亚洲欧洲av冫 | 亚洲s码欧洲m码国产av | 亚洲aⅴ无码成人网站国产app | 男人和女人高潮免费网站 | 丰满妇女强制高潮18xxxx | 久久综合给合久久狠狠狠97色 | 精品国产一区二区三区四区 | 未满小14洗澡无码视频网站 | av无码久久久久不卡免费网站 | 成人免费视频视频在线观看 免费 | 亚洲国产精品美女久久久久 | 欧美人与善在线com | 人人妻人人澡人人爽精品欧美 | 亚洲国产欧美日韩精品一区二区三区 | 国产精品无套呻吟在线 | 人妻体内射精一区二区三四 | 男人和女人高潮免费网站 | 97精品人妻一区二区三区香蕉 | 97色伦图片97综合影院 | 久青草影院在线观看国产 | 大乳丰满人妻中文字幕日本 | 欧美精品在线观看 | 久久久精品国产sm最大网站 | 亚洲精品国产精品乱码不卡 | 国产做国产爱免费视频 | 激情亚洲一区国产精品 | 无码人妻精品一区二区三区下载 | 久久国内精品自在自线 | 日本丰满熟妇videos | 在线观看国产一区二区三区 | 国产情侣作爱视频免费观看 | 国产成人亚洲综合无码 | 国产精品久久久久无码av色戒 | 国产激情精品一区二区三区 | 亚洲中文无码av永久不收费 | 免费看男女做好爽好硬视频 | 国产亚洲人成a在线v网站 | 婷婷五月综合缴情在线视频 | 国产精品久久久午夜夜伦鲁鲁 | 国产成人无码区免费内射一片色欲 | 欧美猛少妇色xxxxx | 国产精品嫩草久久久久 | 中文字幕色婷婷在线视频 | 黑人大群体交免费视频 | 欧美三级a做爰在线观看 | 7777奇米四色成人眼影 | 丰腴饱满的极品熟妇 | 亚洲日本va中文字幕 | 精品熟女少妇av免费观看 | 久久国产自偷自偷免费一区调 | 国产深夜福利视频在线 | 人人爽人人澡人人人妻 | 老司机亚洲精品影院 | 两性色午夜免费视频 | 免费无码肉片在线观看 | 亚洲一区二区三区含羞草 | 欧美亚洲国产一区二区三区 | 在线а√天堂中文官网 | 久久97精品久久久久久久不卡 | 鲁鲁鲁爽爽爽在线视频观看 | 亚洲无人区一区二区三区 | 亚洲一区二区三区播放 | 巨爆乳无码视频在线观看 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 色婷婷香蕉在线一区二区 | 亚洲精品久久久久中文第一幕 | 亚洲中文字幕在线无码一区二区 | 国产精品无码永久免费888 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 亚洲国产精品毛片av不卡在线 | 国精品人妻无码一区二区三区蜜柚 | 精品无码国产一区二区三区av | 亚洲一区二区三区国产精华液 | 亚洲中文字幕在线观看 | 最新国产乱人伦偷精品免费网站 | 牲欲强的熟妇农村老妇女视频 | 玩弄人妻少妇500系列视频 | 老子影院午夜精品无码 | 亚洲精品综合一区二区三区在线 | 日韩亚洲欧美中文高清在线 | 国精产品一品二品国精品69xx | 亚洲精品国产第一综合99久久 | 2020久久超碰国产精品最新 | 午夜无码人妻av大片色欲 | 亚洲国产精品一区二区第一页 | 人人妻人人澡人人爽欧美精品 | 国产婷婷色一区二区三区在线 | 欧美成人免费全部网站 | 人妻中文无码久热丝袜 | 国产区女主播在线观看 | 中文字幕久久久久人妻 | 日本一区二区三区免费高清 | 午夜精品久久久久久久 | 免费无码一区二区三区蜜桃大 | 久久久精品成人免费观看 | 日日躁夜夜躁狠狠躁 | 亚洲日韩av片在线观看 | 人人妻人人澡人人爽人人精品 | 国产午夜视频在线观看 | 免费播放一区二区三区 | 亚洲aⅴ无码成人网站国产app | 特级做a爰片毛片免费69 | 亚洲中文字幕va福利 | 亚洲日韩av一区二区三区四区 | 亚洲熟悉妇女xxx妇女av | 亲嘴扒胸摸屁股激烈网站 | 女人和拘做爰正片视频 | 伊在人天堂亚洲香蕉精品区 | 国产成人精品一区二区在线小狼 | 福利一区二区三区视频在线观看 | 高清无码午夜福利视频 | 欧美人与物videos另类 | 亚洲欧美日韩综合久久久 | 精品偷拍一区二区三区在线看 | 欧洲熟妇精品视频 | 日日噜噜噜噜夜夜爽亚洲精品 | 特黄特色大片免费播放器图片 | 波多野结衣高清一区二区三区 | 黄网在线观看免费网站 | 久久人妻内射无码一区三区 | 人妻体内射精一区二区三四 | 亚洲成色在线综合网站 | 在线а√天堂中文官网 | 97精品国产97久久久久久免费 | 日产精品高潮呻吟av久久 | 欧美日韩亚洲国产精品 | 欧美怡红院免费全部视频 | 国产亚洲精品久久久闺蜜 | 国产猛烈高潮尖叫视频免费 | 国产精品福利视频导航 | 精品夜夜澡人妻无码av蜜桃 | 中文字幕日韩精品一区二区三区 | 亚洲国精产品一二二线 | 成人无码精品1区2区3区免费看 | 亚洲高清偷拍一区二区三区 | 成人免费视频视频在线观看 免费 | 日日鲁鲁鲁夜夜爽爽狠狠 | 亚洲春色在线视频 | 国产亚洲视频中文字幕97精品 | 久久久久久久人妻无码中文字幕爆 | 欧美成人家庭影院 | 十八禁真人啪啪免费网站 | 亚洲精品国产品国语在线观看 | 无码国模国产在线观看 | 人人爽人人澡人人高潮 | 国产日产欧产精品精品app | 暴力强奷在线播放无码 | 国内综合精品午夜久久资源 | 在线观看国产一区二区三区 | 国产xxx69麻豆国语对白 | 亚洲日韩一区二区三区 | 久久99久久99精品中文字幕 | 久久久久免费精品国产 | 无码人妻精品一区二区三区下载 | 亚洲欧美中文字幕5发布 | 中文无码精品a∨在线观看不卡 | 天堂无码人妻精品一区二区三区 | 红桃av一区二区三区在线无码av | 国产午夜亚洲精品不卡下载 | 国产区女主播在线观看 | 国产绳艺sm调教室论坛 | 无遮挡国产高潮视频免费观看 | 久久久久久国产精品无码下载 | 纯爱无遮挡h肉动漫在线播放 | 国产午夜福利100集发布 | 天堂亚洲2017在线观看 | 97精品国产97久久久久久免费 | 东京热一精品无码av | 成人亚洲精品久久久久软件 | 精品无码一区二区三区的天堂 | 国产人妻人伦精品 | 国产精品福利视频导航 | 鲁大师影院在线观看 | 欧美人与禽猛交狂配 | 亚洲欧美中文字幕5发布 | 日韩亚洲欧美精品综合 | 国产免费久久久久久无码 | 午夜熟女插插xx免费视频 | 国产午夜无码精品免费看 | 伊人色综合久久天天小片 | 中文字幕av伊人av无码av | 国产成人午夜福利在线播放 | 麻豆国产人妻欲求不满谁演的 | 亚洲大尺度无码无码专区 | 亚洲精品www久久久 | 久久精品中文字幕大胸 | 亚洲国产精品无码一区二区三区 | 99精品国产综合久久久久五月天 | 女人被男人躁得好爽免费视频 | 久久精品人人做人人综合试看 | 精品aⅴ一区二区三区 | 欧美35页视频在线观看 | 亚洲另类伦春色综合小说 | 久久国语露脸国产精品电影 | 九九久久精品国产免费看小说 | 四虎永久在线精品免费网址 | 亚洲国产成人a精品不卡在线 | 一本大道久久东京热无码av | 无码播放一区二区三区 | a片免费视频在线观看 | 久久综合色之久久综合 | 精品欧美一区二区三区久久久 | 老司机亚洲精品影院无码 | 久久久久亚洲精品男人的天堂 | 欧美大屁股xxxxhd黑色 | 天堂无码人妻精品一区二区三区 | 国产午夜视频在线观看 | 成年女人永久免费看片 | 无码av岛国片在线播放 | 久久久av男人的天堂 | 女人被男人躁得好爽免费视频 | 蜜桃av抽搐高潮一区二区 | 精品成人av一区二区三区 | 妺妺窝人体色www在线小说 | 一本一道久久综合久久 | 黑人粗大猛烈进出高潮视频 | 国产午夜亚洲精品不卡 | 日产精品高潮呻吟av久久 | 国产免费久久久久久无码 | 精品国产aⅴ无码一区二区 | 无码纯肉视频在线观看 | 色婷婷av一区二区三区之红樱桃 | a国产一区二区免费入口 | 久久久婷婷五月亚洲97号色 | 亚洲一区二区观看播放 | 天天摸天天碰天天添 | 人妻少妇精品无码专区动漫 | 精品国精品国产自在久国产87 | 国产深夜福利视频在线 | 扒开双腿吃奶呻吟做受视频 | 亚洲精品一区二区三区四区五区 | 日本护士毛茸茸高潮 | 国产熟女一区二区三区四区五区 | 亚洲aⅴ无码成人网站国产app | 美女极度色诱视频国产 | 色窝窝无码一区二区三区色欲 | 无码国产色欲xxxxx视频 | 97夜夜澡人人爽人人喊中国片 | 亚洲综合无码一区二区三区 | 亚洲狠狠婷婷综合久久 | 日本大香伊一区二区三区 | 亚洲色偷偷男人的天堂 | 亚洲乱码日产精品bd | 正在播放老肥熟妇露脸 | 一本久久a久久精品vr综合 | 日韩精品a片一区二区三区妖精 | 亚洲日韩av一区二区三区四区 | 狠狠亚洲超碰狼人久久 | 无码免费一区二区三区 | 55夜色66夜色国产精品视频 | 日欧一片内射va在线影院 | 国产精品久久久久久久9999 | 最新国产乱人伦偷精品免费网站 | 亚洲一区二区三区四区 | 国产亚洲美女精品久久久2020 | 超碰97人人做人人爱少妇 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 日本xxxx色视频在线观看免费 | 亚洲一区二区三区在线观看网站 | 国产精品多人p群无码 | 国产手机在线αⅴ片无码观看 | 又大又紧又粉嫩18p少妇 | 高清无码午夜福利视频 | 沈阳熟女露脸对白视频 | 日本一卡2卡3卡四卡精品网站 | 久久99精品久久久久婷婷 | 中文字幕乱码中文乱码51精品 | 成人无码精品一区二区三区 | 无码人妻av免费一区二区三区 | 久久久精品456亚洲影院 | 思思久久99热只有频精品66 | 精品无码一区二区三区爱欲 | 少妇人妻大乳在线视频 | 在线观看国产午夜福利片 | 国产香蕉97碰碰久久人人 | 精品国产精品久久一区免费式 | 午夜丰满少妇性开放视频 | 国内精品久久毛片一区二区 | 亚洲色成人中文字幕网站 | 亚洲成av人影院在线观看 | 狠狠噜狠狠狠狠丁香五月 | 国产舌乚八伦偷品w中 | 国产极品美女高潮无套在线观看 | 日日摸日日碰夜夜爽av | 久久伊人色av天堂九九小黄鸭 | 国产乱子伦视频在线播放 | 激情国产av做激情国产爱 | 欧美国产日韩亚洲中文 | 中文精品无码中文字幕无码专区 | 国产精品高潮呻吟av久久4虎 | www国产亚洲精品久久久日本 | 久久亚洲国产成人精品性色 | 国产 浪潮av性色四虎 | 亚洲一区二区三区含羞草 | 精品久久久久久人妻无码中文字幕 | 精品一区二区不卡无码av | 国产精品第一国产精品 | 精品久久久中文字幕人妻 | 4hu四虎永久在线观看 | 国产精品亚洲综合色区韩国 | 久久国产精品精品国产色婷婷 | 久久99久久99精品中文字幕 | 99久久人妻精品免费二区 | 最近的中文字幕在线看视频 | 日日夜夜撸啊撸 | 兔费看少妇性l交大片免费 | 中文久久乱码一区二区 | 人人妻人人澡人人爽欧美一区九九 | 免费乱码人妻系列无码专区 | 激情爆乳一区二区三区 | 欧美真人作爱免费视频 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 国产亚洲日韩欧美另类第八页 | 欧美老人巨大xxxx做受 | 国产av人人夜夜澡人人爽麻豆 | 亚洲精品国产a久久久久久 | 少妇久久久久久人妻无码 | 色五月五月丁香亚洲综合网 | 亲嘴扒胸摸屁股激烈网站 | 亚洲中文字幕va福利 | 丰满少妇女裸体bbw | 日日麻批免费40分钟无码 | 中文字幕乱码人妻无码久久 | 国产精品久久久久无码av色戒 | 小sao货水好多真紧h无码视频 | 国产精品亚洲五月天高清 | 欧美国产亚洲日韩在线二区 | 蜜桃视频插满18在线观看 | 一区二区三区乱码在线 | 欧洲 | 丰满肥臀大屁股熟妇激情视频 | 中文字幕精品av一区二区五区 | 色一情一乱一伦一区二区三欧美 | 免费网站看v片在线18禁无码 | 成年女人永久免费看片 | 欧美丰满少妇xxxx性 | 亚洲а∨天堂久久精品2021 | 国产无遮挡又黄又爽又色 | 国产激情综合五月久久 | 日韩精品a片一区二区三区妖精 | 无码av免费一区二区三区试看 | 精品久久久久香蕉网 | 激情国产av做激情国产爱 | 双乳奶水饱满少妇呻吟 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 国产精品无码久久av | 国产精品va在线播放 | 亚洲色欲久久久综合网东京热 | 亚洲人亚洲人成电影网站色 | 国产真人无遮挡作爱免费视频 | 少妇性俱乐部纵欲狂欢电影 | 在线天堂新版最新版在线8 | 久久精品女人天堂av免费观看 | 久久97精品久久久久久久不卡 | 久久久久久亚洲精品a片成人 | 亚洲成在人网站无码天堂 | 丝袜足控一区二区三区 | 又紧又大又爽精品一区二区 | 欧美 丝袜 自拍 制服 另类 | 99久久精品国产一区二区蜜芽 | 日韩av无码中文无码电影 | 久久久久99精品成人片 | 中文字幕无码av激情不卡 | 亚洲综合无码一区二区三区 | 国产乱子伦视频在线播放 | 色欲综合久久中文字幕网 | 午夜不卡av免费 一本久久a久久精品vr综合 | 国产无遮挡又黄又爽又色 | 超碰97人人射妻 | 国产人妻大战黑人第1集 | 成在人线av无码免观看麻豆 | 亚洲精品午夜无码电影网 | av无码不卡在线观看免费 | 无码毛片视频一区二区本码 | 国产精品高潮呻吟av久久4虎 | 日日天日日夜日日摸 | 九一九色国产 | 国产麻豆精品精东影业av网站 | 激情五月综合色婷婷一区二区 | 久久久久久av无码免费看大片 | 亚洲精品国产第一综合99久久 | 天天av天天av天天透 | 色婷婷香蕉在线一区二区 | 亚洲 日韩 欧美 成人 在线观看 | 色欲综合久久中文字幕网 | av香港经典三级级 在线 | 东京热无码av男人的天堂 | 狠狠色丁香久久婷婷综合五月 | 亚洲乱码日产精品bd | 亚洲天堂2017无码中文 | 免费无码av一区二区 | 国产特级毛片aaaaaa高潮流水 | 六月丁香婷婷色狠狠久久 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 国产另类ts人妖一区二区 | 乱码av麻豆丝袜熟女系列 | 大色综合色综合网站 | 三上悠亚人妻中文字幕在线 | 色婷婷久久一区二区三区麻豆 | 综合激情五月综合激情五月激情1 | 国产精品亚洲一区二区三区喷水 | 无码av免费一区二区三区试看 | 欧美日韩精品 | 日本va欧美va欧美va精品 | 亚洲熟妇色xxxxx欧美老妇 | 天天做天天爱天天爽综合网 | 国产无套内射久久久国产 | 精品久久久无码人妻字幂 | 精品水蜜桃久久久久久久 | 国产精品沙发午睡系列 | 精品人人妻人人澡人人爽人人 | 久久99久久99精品中文字幕 | 午夜成人1000部免费视频 | 久久久久亚洲精品中文字幕 | 亚洲s色大片在线观看 | 精品国产精品久久一区免费式 | 精品一二三区久久aaa片 | 国产成人综合色在线观看网站 | 波多野结衣av一区二区全免费观看 | 久久天天躁夜夜躁狠狠 | 纯爱无遮挡h肉动漫在线播放 | 日日噜噜噜噜夜夜爽亚洲精品 | 免费观看的无遮挡av | 国产偷自视频区视频 | 牲欲强的熟妇农村老妇女视频 | 人妻少妇精品视频专区 | 成人精品天堂一区二区三区 | 久久久精品欧美一区二区免费 | 精品aⅴ一区二区三区 | 国产人妻久久精品二区三区老狼 | 国产亚av手机在线观看 | 妺妺窝人体色www婷婷 | 久久久久亚洲精品男人的天堂 | 亚洲精品午夜无码电影网 | 日本又色又爽又黄的a片18禁 | 欧美变态另类xxxx | av无码久久久久不卡免费网站 | 国产熟妇另类久久久久 | 狠狠色噜噜狠狠狠狠7777米奇 | 伊人久久大香线蕉亚洲 | 婷婷色婷婷开心五月四房播播 | 中文久久乱码一区二区 | 亚洲色www成人永久网址 | 无码人妻精品一区二区三区不卡 | 国产成人无码av一区二区 | 老熟女重囗味hdxx69 | 少妇高潮一区二区三区99 | 欧美人妻一区二区三区 | 欧洲极品少妇 | 国产区女主播在线观看 | 久久精品女人的天堂av | 日产国产精品亚洲系列 | 亚洲综合另类小说色区 | 久久精品国产精品国产精品污 | 久久久久se色偷偷亚洲精品av | 狠狠cao日日穞夜夜穞av | 超碰97人人射妻 | 日韩人妻无码一区二区三区久久99 | 99久久久无码国产aaa精品 | 中文字幕无码日韩专区 | 宝宝好涨水快流出来免费视频 | 国产超级va在线观看视频 | 亚洲 a v无 码免 费 成 人 a v | 性欧美牲交xxxxx视频 | 99久久婷婷国产综合精品青草免费 | 日韩视频 中文字幕 视频一区 | 成熟女人特级毛片www免费 | 蜜桃av抽搐高潮一区二区 | 中文字幕精品av一区二区五区 | 一二三四社区在线中文视频 | 久久午夜无码鲁丝片秋霞 | 国产精品亚洲专区无码不卡 | 中文字幕无码视频专区 | 中文字幕av无码一区二区三区电影 | 精品午夜福利在线观看 | 我要看www免费看插插视频 | 午夜精品一区二区三区在线观看 | 国产亚洲精品久久久久久 | 99久久久国产精品无码免费 | 久久这里只有精品视频9 | 伊人久久大香线蕉av一区二区 | 精品人妻人人做人人爽夜夜爽 | 人妻无码αv中文字幕久久琪琪布 | 国产成人精品无码播放 | 国产亚洲美女精品久久久2020 | 久久99精品国产麻豆 | 人妻少妇精品视频专区 | 好男人www社区 | 少妇人妻偷人精品无码视频 | 国产精品久久久一区二区三区 | 夜夜夜高潮夜夜爽夜夜爰爰 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 国产婷婷色一区二区三区在线 | аⅴ资源天堂资源库在线 | 日韩视频 中文字幕 视频一区 | 乌克兰少妇xxxx做受 | av无码电影一区二区三区 | 一本久久伊人热热精品中文字幕 | 中文字幕日产无线码一区 | 55夜色66夜色国产精品视频 | 色欲av亚洲一区无码少妇 | 内射后入在线观看一区 | 国产熟女一区二区三区四区五区 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 88国产精品欧美一区二区三区 | 大色综合色综合网站 | 爽爽影院免费观看 | 国产欧美熟妇另类久久久 | 无码福利日韩神码福利片 | 精品无人区无码乱码毛片国产 | 久久久久人妻一区精品色欧美 | 呦交小u女精品视频 | 亚洲熟妇色xxxxx亚洲 | 欧美精品免费观看二区 | 中文字幕无码人妻少妇免费 | 2020久久香蕉国产线看观看 | 丰满岳乱妇在线观看中字无码 | 色婷婷欧美在线播放内射 | 国产一区二区三区四区五区加勒比 | 成年美女黄网站色大免费全看 | 又大又黄又粗又爽的免费视频 | 久久久久国色av免费观看性色 | 国产精品无码成人午夜电影 | 天天爽夜夜爽夜夜爽 | 狠狠躁日日躁夜夜躁2020 | 亚洲成a人片在线观看无码 | 西西人体www44rt大胆高清 | 纯爱无遮挡h肉动漫在线播放 | 亚洲一区二区三区在线观看网站 | 亚洲狠狠婷婷综合久久 | 亚洲欧美日韩综合久久久 | 国产人妻人伦精品1国产丝袜 | 欧美 日韩 人妻 高清 中文 | 女人被男人爽到呻吟的视频 | 亚洲乱码国产乱码精品精 | 亚洲男人av天堂午夜在 | 高清国产亚洲精品自在久久 | 日韩精品无码一区二区中文字幕 | 亚洲精品成人福利网站 | 伊人久久婷婷五月综合97色 | 99久久无码一区人妻 | 一个人看的www免费视频在线观看 | 无码人妻av免费一区二区三区 | 偷窥村妇洗澡毛毛多 | 无码毛片视频一区二区本码 | 色一情一乱一伦一区二区三欧美 | 又紧又大又爽精品一区二区 | 久久 国产 尿 小便 嘘嘘 | 老子影院午夜伦不卡 | 日产国产精品亚洲系列 | 国产美女精品一区二区三区 | 中文字幕无码乱人伦 | 少妇性俱乐部纵欲狂欢电影 | 人人妻人人澡人人爽欧美一区九九 | 六十路熟妇乱子伦 | 亚洲欧美日韩成人高清在线一区 | 无码人妻丰满熟妇区五十路百度 | 日韩精品a片一区二区三区妖精 | 国产美女极度色诱视频www | 未满成年国产在线观看 | 精品一区二区三区无码免费视频 | 亚洲精品欧美二区三区中文字幕 | 无码国产乱人伦偷精品视频 | 日本在线高清不卡免费播放 | 久久久久av无码免费网 | 久久国内精品自在自线 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 亚洲高清偷拍一区二区三区 | 东京热一精品无码av | 少妇无码一区二区二三区 | 欧美性生交xxxxx久久久 | 成人精品视频一区二区三区尤物 | 亚洲国产成人av在线观看 | 领导边摸边吃奶边做爽在线观看 | 十八禁真人啪啪免费网站 | 荡女精品导航 | 在线播放免费人成毛片乱码 | 久久久久成人片免费观看蜜芽 | 性欧美熟妇videofreesex | 男女性色大片免费网站 | 在线天堂新版最新版在线8 | 国产日产欧产精品精品app | 综合激情五月综合激情五月激情1 | 欧美成人家庭影院 | 亚洲色欲色欲天天天www | 欧美日韩视频无码一区二区三 | 少妇被黑人到高潮喷出白浆 | 无码av中文字幕免费放 | 亚洲成a人片在线观看无码3d | 国产莉萝无码av在线播放 | 国产精品99爱免费视频 | 国产精品a成v人在线播放 | 乱码av麻豆丝袜熟女系列 | 亚洲中文字幕av在天堂 | 黑人巨大精品欧美黑寡妇 | www国产亚洲精品久久网站 | www成人国产高清内射 | 久久精品人人做人人综合 | 成人精品视频一区二区三区尤物 | 亚洲自偷自拍另类第1页 | 伊在人天堂亚洲香蕉精品区 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 在线观看国产午夜福利片 | 一本大道久久东京热无码av | 国产熟妇高潮叫床视频播放 | 国产成人av免费观看 | 国产高潮视频在线观看 | 欧美自拍另类欧美综合图片区 | 国产精品欧美成人 | 伦伦影院午夜理论片 | 97夜夜澡人人双人人人喊 | 国产成人精品优优av | 一本大道伊人av久久综合 | 永久免费精品精品永久-夜色 | 日日干夜夜干 | 丰满岳乱妇在线观看中字无码 | 国产凸凹视频一区二区 | 亚洲精品国产第一综合99久久 | 岛国片人妻三上悠亚 | 久久99国产综合精品 | 无码国内精品人妻少妇 | 波多野结衣乳巨码无在线观看 | 亚洲熟妇色xxxxx欧美老妇 | 国产偷抇久久精品a片69 | 亚洲成熟女人毛毛耸耸多 | www国产亚洲精品久久久日本 | 岛国片人妻三上悠亚 | 亚洲gv猛男gv无码男同 | 无码国内精品人妻少妇 | 青草青草久热国产精品 | 中文字幕无码人妻少妇免费 | 亚洲中文字幕成人无码 | 撕开奶罩揉吮奶头视频 | 亚洲精品一区国产 | av无码久久久久不卡免费网站 | 性色欲网站人妻丰满中文久久不卡 | 亚洲自偷自偷在线制服 | 久久亚洲日韩精品一区二区三区 | 巨爆乳无码视频在线观看 | 久久综合狠狠综合久久综合88 | 日韩欧美群交p片內射中文 | 天天爽夜夜爽夜夜爽 | 最新国产乱人伦偷精品免费网站 | 日本饥渴人妻欲求不满 | 国产亲子乱弄免费视频 | 欧美freesex黑人又粗又大 | 国精产品一区二区三区 | √8天堂资源地址中文在线 | 久久国产精品精品国产色婷婷 | 97久久国产亚洲精品超碰热 | 久久精品国产一区二区三区肥胖 | 熟女俱乐部五十路六十路av | 亚洲国产精品久久久久久 | 俺去俺来也www色官网 | 亚洲日韩精品欧美一区二区 | 亚洲综合无码久久精品综合 | 精品水蜜桃久久久久久久 | 永久免费精品精品永久-夜色 | 国产偷自视频区视频 | 精品无码一区二区三区的天堂 | 久久午夜无码鲁丝片午夜精品 | 亚洲热妇无码av在线播放 | 精品日本一区二区三区在线观看 | 国产熟妇高潮叫床视频播放 | 国产av剧情md精品麻豆 | 亚洲熟妇自偷自拍另类 | 欧美日韩色另类综合 | 午夜精品一区二区三区在线观看 | 青青青爽视频在线观看 | 国产区女主播在线观看 | 动漫av一区二区在线观看 | 成人片黄网站色大片免费观看 | 麻豆精品国产精华精华液好用吗 | 18精品久久久无码午夜福利 | 国产精品人人妻人人爽 | 久久精品人人做人人综合 | 最近中文2019字幕第二页 | 久久综合给久久狠狠97色 | 丰满人妻被黑人猛烈进入 | 亚洲自偷自拍另类第1页 | 一本大道伊人av久久综合 | 无码精品国产va在线观看dvd | 欧美喷潮久久久xxxxx | 欧美 日韩 亚洲 在线 | 377p欧洲日本亚洲大胆 | 无码人中文字幕 | 亚洲一区二区三区国产精华液 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 人人超人人超碰超国产 | 国产精品永久免费视频 | 亚洲色欲久久久综合网东京热 | 亚洲一区二区三区国产精华液 | 国产莉萝无码av在线播放 | 欧美精品无码一区二区三区 | 一本精品99久久精品77 | 人人妻人人澡人人爽人人精品浪潮 | 在线视频网站www色 | 久久久久成人片免费观看蜜芽 | 任你躁在线精品免费 | 日韩精品成人一区二区三区 | 欧美日韩综合一区二区三区 | 精品 日韩 国产 欧美 视频 | 成人欧美一区二区三区黑人免费 | 玩弄中年熟妇正在播放 | 女人和拘做爰正片视频 | 午夜精品一区二区三区的区别 | 精品欧美一区二区三区久久久 | 国产人妻精品一区二区三区不卡 | 在线精品国产一区二区三区 | 强伦人妻一区二区三区视频18 | 久久人人爽人人爽人人片av高清 | 欧美成人午夜精品久久久 | 国产精品毛片一区二区 | 欧美精品无码一区二区三区 | 成熟妇人a片免费看网站 | 国产亚洲欧美日韩亚洲中文色 | 成人影院yy111111在线观看 | 狠狠色丁香久久婷婷综合五月 | 中文亚洲成a人片在线观看 | 国产亲子乱弄免费视频 | 日本一本二本三区免费 | 国产美女精品一区二区三区 | 中文字幕无码av波多野吉衣 | 最新国产乱人伦偷精品免费网站 | 帮老师解开蕾丝奶罩吸乳网站 | 亚洲性无码av中文字幕 | 欧洲精品码一区二区三区免费看 | 粗大的内捧猛烈进出视频 | 丝袜 中出 制服 人妻 美腿 | 久久国语露脸国产精品电影 | 99国产精品白浆在线观看免费 | 成年女人永久免费看片 | 强辱丰满人妻hd中文字幕 | 无码av最新清无码专区吞精 | 伊在人天堂亚洲香蕉精品区 | 日日干夜夜干 | 国产精华av午夜在线观看 | 99久久精品日本一区二区免费 | 国内综合精品午夜久久资源 | 久久www免费人成人片 | 成人无码视频免费播放 | a片免费视频在线观看 | 欧美xxxx黑人又粗又长 | 午夜无码人妻av大片色欲 | 极品尤物被啪到呻吟喷水 | 人妻与老人中文字幕 | 欧美日韩一区二区综合 | 乱中年女人伦av三区 | 亚洲精品久久久久久一区二区 | 人妻无码久久精品人妻 | 4hu四虎永久在线观看 | 国产极品视觉盛宴 | 成年美女黄网站色大免费全看 | 国产亚洲精品精品国产亚洲综合 | 亚洲中文字幕无码中文字在线 | 亚洲精品一区三区三区在线观看 | 中文字幕无线码 | 亚洲s色大片在线观看 | 露脸叫床粗话东北少妇 | 久久久精品人妻久久影视 | 天堂久久天堂av色综合 | 亚洲中文字幕乱码av波多ji | 国产香蕉尹人综合在线观看 | 久久99国产综合精品 | 高潮毛片无遮挡高清免费 | 国产三级精品三级男人的天堂 | 成年美女黄网站色大免费全看 | 天天躁日日躁狠狠躁免费麻豆 | 人人妻人人澡人人爽精品欧美 | 国产成人人人97超碰超爽8 | 俺去俺来也在线www色官网 | 国产精品久久久久久久9999 | 国产两女互慰高潮视频在线观看 | 久久综合香蕉国产蜜臀av | 精品偷自拍另类在线观看 | 久久精品视频在线看15 | 高清国产亚洲精品自在久久 | 日本免费一区二区三区最新 | 在线观看国产午夜福利片 | 国产精品亚洲综合色区韩国 | av人摸人人人澡人人超碰下载 | 波多野结衣av一区二区全免费观看 | 激情国产av做激情国产爱 | 亚洲午夜福利在线观看 | 国产无套内射久久久国产 | 国产绳艺sm调教室论坛 | 一二三四社区在线中文视频 | 久久亚洲精品中文字幕无男同 | 老司机亚洲精品影院无码 | 亚洲精品欧美二区三区中文字幕 | 国产精品美女久久久久av爽李琼 | 国产亚洲精品久久久闺蜜 | 午夜丰满少妇性开放视频 | 国产精品亚洲五月天高清 | 永久黄网站色视频免费直播 | 国产亚洲日韩欧美另类第八页 | 中文字幕乱码中文乱码51精品 | 俺去俺来也在线www色官网 | 国产97在线 | 亚洲 | av香港经典三级级 在线 | 久久午夜无码鲁丝片午夜精品 | 国产激情无码一区二区 | 任你躁在线精品免费 | 在线亚洲高清揄拍自拍一品区 | 玩弄中年熟妇正在播放 | 久久久久亚洲精品男人的天堂 | а√资源新版在线天堂 | 波多野42部无码喷潮在线 |