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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

ARM指令集详解(超详细!带实例!)

發布時間:2023/12/13 综合教程 42 生活家
生活随笔 收集整理的這篇文章主要介紹了 ARM指令集详解(超详细!带实例!) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

算術和邏輯指令

ADC : 帶進位的加法

(Addition with Carry)

ADC{條件}{S}  <dest>, <op 1>, <op 2>

                dest = op_1 + op_2 + carry

ADC 將把兩個操作數加起來,并把結果放置到目的寄存器中。它使用一個進位標志位,這樣就可以做比 32 位大的加法。下列例子將加兩個 128 位的數。
128 位結果: 寄存器 0、1、2、和 3
第一個 128 位數: 寄存器 4、5、6、和 7
第二個 128 位數: 寄存器 8、9、10、和 11。

ADDS    R0, R4, R8              ; 加低端的字
  ADCS    R1, R5, R9              ; 加下一個字,帶進位
  ADCS    R2, R6, R10             ; 加第三個字,帶進位
  ADCS    R3, R7, R11             ; 加高端的字,帶進位

如果如果要做這樣的加法,不要忘記設置 S 后綴來更改進位標志。

 

ADD : 加法

(Addition)

ADD{條件}{S}  <dest>, <op 1>, <op 2>

                dest = op_1 + op_2

ADD 將把兩個操作數加起來,把結果放置到目的寄存器中。操作數 1 是一個寄存器,操作數 2 可以是一個寄存器,被移位的寄存器,或一個立即值:

ADD     R0, R1, R2              ; R0 = R1 + R2
  ADD     R0, R1, #256            ; R0 = R1 + 256
  ADD     R0, R2, R3,LSL#1        ; R0 = R2 + (R3 << 1)

加法可以在有符號和無符號數上進行。

 

AND : 邏輯與

(logical AND)

AND{條件}{S}  <dest>, <op 1>, <op 2>

                dest = op_1 AND op_2

AND 將在兩個操作數上進行邏輯與,把結果放置到目的寄存器中;對屏蔽你要在上面工作的位很有用。 操作數 1 是一個寄存器,操作數 2 可以是一個寄存器,被移位的寄存器,或一個立即值:

AND     R0, R0, #3              ; R0 = 保持 R0 的位 0 和 1,丟棄其余的位。

AND 的真值表(二者都是 1 則結果為 1):

Op_1   Op_2   結果

  0      0      0
  0      1      0
  1      0      0
  1      1      1
 

BIC : 位清除

(Bit Clear)

BIC{條件}{S}  <dest>, <op 1>, <op 2>

                dest = op_1 AND (!op_2)

BIC 是在一個字中清除位的一種方法,與 OR 位設置是相反的操作。操作數 2 是一個 32 位位掩碼(mask)。如果如果在掩碼中設置了某一位,則清除這一位。未設置的掩碼位指示此位保持不變。

BIC     R0, R0, #%1011          ; 清除 R0 中的位 0、1、和 3。保持其余的不變。

BIC 真值表 :

Op_1   Op_2   結果

  0      0      0
  0      1      0
  1      0      1
  1      1      0
譯注:邏輯表達式為 Op_1 AND NOT Op_2

 

EOR : 邏輯異或

(logical Exclusive OR)

EOR{條件}{S}  <dest>, <op 1>, <op 2>

                dest = op_1 EOR op_2

EOR 將在兩個操作數上進行邏輯異或,把結果放置到目的寄存器中;對反轉特定的位有用。操作數 1 是一個寄存器,操作數 2 可以是一個寄存器,被移位的寄存器,或一個立即值:

EOR     R0, R0, #3              ; 反轉 R0 中的位 0 和 1

EOR 真值表(二者不同則結果為 1):

Op_1   Op_2   結果

  0      0      0
  0      1      1
  1      0      1
  1      1      0
 

MOV : 傳送

(Move)

MOV{條件}{S}  <dest>, <op 1>

                dest = op_1

MOV 從另一個寄存器、被移位的寄存器、或一個立即值裝載一個值到目的寄存器。你可以指定相同的寄存器來實現 NOP 指令的效果,你還可以專門移位一個寄存器:

MOV     R0, R0                  ; R0 = R0... NOP 指令

  MOV     R0, R0, LSL#3           ; R0 = R0 * 8

如果 R15 是目的寄存器,將修改程序計數器或標志。這用于返回到調用代碼,方法是把連接寄存器的內容傳送到 R15:

MOV     PC, R14                 ; 退出到調用者

  MOVS    PC, R14                 ; 退出到調用者并恢復標志位
                                    (不遵從 32-bit 體系)
 

MVN : 傳送取反的值

(MoveNegative)

MVN{條件}{S}  <dest>, <op 1>

                dest = !op_1

MVN 從另一個寄存器、被移位的寄存器、或一個立即值裝載一個值到目的寄存器。不同之處是在傳送之前位被反轉了,所以把一個被取反的值傳送到一個寄存器中。這是邏輯非操作而不是算術操作,這個取反的值加 1 才是它的取負的值:

MVN     R0, #4                  ; R0 = -5

  MVN     R0, #0                  ; R0 = -1
 

ORR : 邏輯或

(logical OR)

ORR{條件}{S}  <dest>, <op 1>, <op 2>

                dest = op_1 OR op_2

OR 將在兩個操作數上進行邏輯或,把結果放置到目的寄存器中;對設置特定的位有用。操作數 1 是一個寄存器,操作數 2 可以是一個寄存器,被移位的寄存器,或一個立即值:

ORR     R0, R0, #3              ; 設置 R0 中位 0 和 1

OR 真值表(二者中存在 1 則結果為 1):

Op_1   Op_2   結果

  0      0      0
  0      1      1
  1      0      1
  1      1      1
 

RSB : 反向減法

(Reverse Subtraction)

RSB{條件}{S}  <dest>, <op 1>, <op 2>

                dest = op_2 - op_1

SUB 用操作數 two 減去操作數 one,把結果放置到目的寄存器中。操作數 1 是一個寄存器,操作數 2 可以是一個寄存器,被移位的寄存器,或一個立即值:

RSB     R0, R1, R2              ; R0 = R2 - R1
  RSB     R0, R1, #256            ; R0 = 256 - R1
  RSB     R0, R2, R3,LSL#1        ; R0 = (R3 << 1) - R2

反向減法可以在有符號或無符號數上進行。

 

RSC : 帶借位的反向減法

(Reverse Subtraction with Carry)

RSC{條件}{S}  <dest>, <op 1>, <op 2>

                dest = op_2 - op_1 - !carry

同于 SBC,但倒換了兩個操作數的前后位置。

 

SBC : 帶借位的減法

(Subtraction with Carry)

SBC{條件}{S}  <dest>, <op 1>, <op 2>

                dest = op_1 - op_2 - !carry

SBC 做兩個操作數的減法,把結果放置到目的寄存器中。它使用進位標志來表示借位,這樣就可以做大于 32 位的減法。SUBSBC 生成進位標志的方式不同于常規,如果需要借位則清除進位標志。所以,指令要對進位標志進行一個操作 - 在指令執行期間自動的反轉此位。

 

SUB : 減法

(Subtraction)

SUB{條件}{S}  <dest>, <op 1>, <op 2>

                dest = op_1 - op_2

SUB 用操作數 one 減去操作數 two,把結果放置到目的寄存器中。操作數 1 是一個寄存器,操作數 2 可以是一個寄存器,被移位的寄存器,或一個立即值:

SUB     R0, R1, R2              ; R0 = R1 - R2
  SUB     R0, R1, #256            ; R0 = R1 - 256
  SUB     R0, R2, R3,LSL#1        ; R0 = R2 - (R3 << 1)

減法可以在有符號和無符號數上進行。

移位指令

ARM 處理器組建了可以與數據處理指令(ADC、ADD、AND、BIC、CMN、CMP、EOR、MOV、MVN、ORR、RSB、SBC、SUB、TEQ、TST)一起使用的桶式移位器(barrel shifter)。你還可以使用桶式移位器影響在 LDR/STR 操作中的變址值。

譯注:移位操作在 ARM 指令集中不作為單獨的指令使用,它是指令格式中是一個字段,在匯編語言中表示為指令中的選項。如果數據處理指令的第二個操作數或者單一數據傳送指令中的變址是寄存器,則可以對它進行各種移位操作。如果數據處理指令的第二個操作數是立即值,在指令中用 8 位立即值和 4 位循環移位來表示它,所以對大于 255 的立即值,匯編器嘗試通過在指令中設置循環移位數量來表示它,如果不能表示則生成一個錯誤。在邏輯類指令中,邏輯運算指令由指令中 S 位的設置或清除來確定是否影響進位標志,而比較指令的 S 位總是設置的。在單一數據傳送指令中指定移位的數量只能用立即值而不能用寄存器。

下面是給不同的移位類型的六個助記符:

LSL  邏輯左移
  ASL  算術左移
  LSR  邏輯右移
  ASR  算術右移
  ROR  循環右移
  RRX  帶擴展的循環右移

ASLLSL 是等同的,可以自由互換。

你可以用一個立即值(從 0 到 31)指定移位數量,或用包含在 0 和 31 之間的一個值的寄存器指定移位數量。

邏輯或算術左移

(Logical or Arithmetic Shift Left)

Rx, LSL #n    or
  Rx, ASL #n    or
  Rx, LSL Rn    or
  Rx, ASL Rn

接受 Rx 的內容并按用‘n’或在寄存器 Rn 中指定的數量向高有效位方向移位。最低有效位用零來填充。除了概念上的第 33 位(就是被移出的最小的那位)之外丟棄移出最左端的高位,如果邏輯類指令中 S 位被設置了,則此位將成為從桶式移位器退出時進位標志的值。

考慮下列:

MOV    R1, #12
  MOV    R0, R1, LSL#2

在退出時,R0 是 48。 這些指令形成的總和是 R0 = #12, LSL#2 等同于 BASIC 的 R0 = 12 << 2

邏輯右移

(Logical Shift Right)

Rx, LSR #n    or
  Rx, LSR Rn

它在概念上與左移相對。把所有位向更低有效位方向移動。如果邏輯類指令中 S 位被設置了,則把最后被移出最右端的那位放置到進位標志中。它同于 BASIC 的 register = value >>> shift

算術右移

(Arithmetic Shift Right)

Rx, ASR #n    or
  Rx, ASR Rn

類似于 LSR,但使用要被移位的寄存器(Rx)的第 31 位的值來填充高位,用來保護補碼表示中的符號。如果邏輯類指令中 S 位被設置了,則把最后被移出最右端的那位放置到進位標志中。它同于 BASIC 的 register = value >> shift

循環右移

(Rotate Right)

Rx, ROR #n    or
  Rx, ROR Rn

循環右移類似于邏輯右移,但是把從右側移出去的位放置到左側,如果邏輯類指令中 S 位被設置了,則同時放置到進位標志中,這就是位的‘循環’。一個移位量為 32 的操作將導致輸出與輸入完全一致,因為所有位都被移位了 32 個位置,又回到了開始時的位置!

帶擴展的循環右移

(Rotate Right with extend)

Rx, RRX

這是一個 ROR#0 操作,它向右移動一個位置 - 不同之處是,它使用處理器的進位標志來提供一個要被移位的 33 位的數量。

乘法指令

指令格式

這兩個指令與普通算術指令在對操作數的限制上有所不同:

給出的所有操作數、和目的寄存器必須為簡單的寄存器。
你不能對操作數 2 使用立即值或被移位的寄存器。
目的寄存器和操作數 1 必須是不同的寄存器。
最后,你不能指定 R15 為目的寄存器。

MLA : 帶累加的乘法

(Multiplication with Accumulate)

MLA{條件}{S}  <dest>, <op 1>, <op 2>, <op 3>

                dest = (op_1 * op_2) + op_3

MLA 的行為同于 MUL,但它把操作數 3 的值加到結果上。這在求總和時有用。

 

MUL : 乘法

(Multiplication)

MUL{條件}{S}  <dest>, <op 1>, <op 2>

                dest = op_1 * op_2

MUL 提供 32 位整數乘法。如果操作數是有符號的,可以假定結果也是有符號的。

比較指令

指令格式

譯注:CMP 和 CMP 是算術指令,TEQ 和 TST 是邏輯指令。把它們歸入一類的原因是它們的 S 位總是設置的,就是說,它們總是影響標志位。

CMN : 比較取負的值

(Compare Negative)

CMN{條件}{P}  <op 1>, <op 2>

                status = op_1 - (- op_2)

CMN 同于 CMP,但它允許你與小負值(操作數 2 的取負的值)進行比較,比如難于用其他方法實現的用于結束列表的 -1。這樣與 -1 比較將使用:

CMN     R0, #1                  ; 把 R0 與 -1 進行比較

詳情參照 CMP 指令。

 

CMP : 比較

(Compare)

CMP{條件}{P}  <op 1>, <op 2>

                status = op_1 - op_2

CMP 允許把一個寄存器的內容如另一個寄存器的內容或立即值進行比較,更改狀態標志來允許進行條件執行。它進行一次減法,但不存儲結果,而是正確的更改標志。標志表示的是操作數 1 比操作數 2 如何(大小等)。如果操作數 1 大于操作操作數 2,則此后的有 GT 后綴的指令將可以執行。
明顯的,你不需要顯式的指定 S 后綴來更改狀態標志... 如果你指定了它則被忽略。

 

TEQ : 測試等價

(Test Equivalence)

TEQ{條件}{P}  <op 1>, <op 2>

                Status = op_1 EOR op_2

TEQ 類似于 TST。區別是這里的概念上的計算是 EOR 而不是 AND。這提供了一種查看兩個操作數是否相同而又不影響進位標志(不象 CMP那樣)的方法。加上 P 后綴的 TEQ 還可用于改變 R15 中的標志(在 26-bit 模式中)。詳情請參照 psr.html,在 32-bit 模式下如何做請參見這里。

 

TST : 測試位

(Test bits)

TST{條件}{P}  <op 1>, <op 2>

                Status = op_1 AND op_2

TST 類似于 CMP,不產生放置到目的寄存器中的結果。而是在給出的兩個操作數上進行操作并把結果反映到狀態標志上。使用 TST 來檢查是否設置了特定的位。操作數 1 是要測試的數據字而操作數 2 是一個位掩碼。經過測試后,如果匹配則設置 Zero 標志,否則清除它。象 CMP 那樣,你不需要指定 S 后綴。

TST     R0, #%1                 ; 測試在 R0 中是否設置了位 0。
 

分支指令

B : 分支

(Branch)
B{條件}  <地址>
B 是最簡單的分支。一旦遇到一個 B 指令,ARM 處理器將立即跳轉到給定的地址,從那里繼續執行。
注意存儲在分支指令中的實際的值是相對當前的 R15 的值的一個偏移量;而不是一個絕對地址。
它的值由匯編器來計算,它是 24 位有符號數,左移兩位后有符號擴展為 32 位,表示的有效偏移為 26 位(+/- 32 M)。
在其他處理器上,你可能經常見到這樣的指令:
OPT 1
  LDA &70
  CMP #0
  BEQ Zero
  STA &72
 .Zero RTS
(取自 Acorn Electron User Guide issue 1 page 213)
在 ARM 處理器上,它們將變成下面這些東西:
OPT     1
  ADR     R1, #&70
  LDR     R0, [R1]
  CMP     #0
  BEQ     Zero
  STR     R0, [R1, #2]
 .Zero
  MOV     PC, R14
這不是一個很好的例子,但你可以構想如何更好的去條件執行而不是分支。另一方面,如果你有大段的代碼或者你的代碼使用狀態標志,那么你可以使用條件執行來實現各類分支: 這樣一個單一的簡單條件執行指令可以替代在其他處理器中存在的所有這些分支和跳轉指令。
OPT     1
  ADR     R1, #&70
  LDR     R0, [R1]
  CMP     R0, #0
  STRNE   R0, [R1, #2]
  MOV     PC, R14

BL : 帶連接的分支

(Branch with Link)
BL{條件}  <地址>
BL 是另一個分支指令。就在分支之前,在寄存器 14 中裝載上 R15 的內容。你可以重新裝載 R14 到 R15 中來返回到在這個分支之后的那個指令,
它是子例程的一個基本但強力的實現。它的作用在屏幕裝載器 2 (例子 4)中得以很好的展現...
.load_new_format
      BL     switch_screen_mode
      BL     get_screen_info
      BL     load_palette

    .new_loop
      MOV    R1, R5
      BL     read_byte
      CMP    R0, #255
      BLEQ   read_loop
      STRB   R0, [R2, #1]!
...在這里我們見到在裝載器循環之前調用了三個子例程。接著,一旦滿足了條件執行就在循環中調用了 read_byte 子例程。

條件執行

 

ARM 處理器的一個非常特殊的特征是它的條件執行。我們指的不是基本的如果進位則分支,ARM 使這個邏輯階段進一步深化為如果進位則 XXX- 這里的 XXX 是任何東西。

為了舉例,下面是 Intel 8086 處理器分支指令的一個列表:

JA    Jump if Above
  JAE   Jump if Above or Equal
  JB    Jump if Below
  JBE   Jump if Below or Equal
  JC    Jump if Carry
  JCXZ  Jump if CX Zero (CX is a register that can be used for loop counts)
  JE    Jump if Equal
  JG    Jump if Greater than
  JGE   Jump if Greater than or Equal
  JL    Jump if Less than
  JLE   Jump if Less Than or Equal
  JMP   JuMP
  JNA   Jump if Not Above
  JNAE  Jump if Not Above or Equal
  JNB   Jump if Not Below
  JNBE  Jump if Not Below or Equal
  JNC   Jump if No Carry
  JNE   Jump if Not Equal
  JNG   Jump if Not Greater than
  JNGE  Jump if Not Greater than or Equal
  JNL   Jump if Not Less than
  JNLE  Jump if Not Less than or Equal
  JNO   Jump if Not Overflow
  JNP   Jump if Not Parity
  JNS   Jump if Not Sign
  JNZ   Jump if Not Zero
  JO    Jump if Overflow
  JP    Jump if Parity
  JPE   Jump if Parity Even
  JPO   Jump if Parity Odd
  JS    Jump if Sign
  JZ    Jump if Zero

80386 添加了:
  JECXZ Jump if ECX Zero

作為對比,ARM 處理器只提供了:

B     分支
  BL    帶連接的分支

但 ARM 提供了條件執行,你可以不受這個表面上不靈活的方式的限制:

BEQ   Branch if EQual
  BNE   Branch if Not Equal
  BVS   Branch if oVerflow Set
  BVC   Branch if oVerflow Clear
  BHI   Branch if HIgher
  BLS   Branch if Lower or the Same
  BPL   Branch if PLus
  BMI   Branch if MInus
  BCS   Branch if Carry Set
  BCC   Branch if Carry Clear
  BGE   Branch if Greater than or Equal
  BGT   Branch if Greater Than
  BLE   Branch if Less than or Equal
  BLT   Branch if Less Than

  BLEQ  Branch with Link if EQual
  ....
  BLLT  Branch with Link if Less Than

還有兩個代碼,
AL - ALways,缺省條件所以不須指定
NV - NeVer,不是非常有用。你無論如何不要使用這個代碼...

當你發現所有 Bxx 指令實際上是同一個指令的時候,緊要關頭就到了。

接著你會想,如果你可以在一個分支指令上加上所有這些條件,那么對一個寄存器裝載指令能否加上它們? 答案是可以。 

下面是可獲得的條件代碼的列表:

EQ : 等于 如果一次比較之后設置了 Z 標志。   NE : 不等于 如果一次比較之后清除了 Z 標志。   VS : 溢出設置 如果在一次算術操作之后設置了 V 標志,計算的結果不適合放入一個 32bit 目標寄存器中。   VC : 溢出清除 如果清除了 V 標志,與 VS 相反。   HI : 高于(無符號) 如果一次比較之后設置了 C 標志清除了 Z 標志。   LS : 低于或同于(無符號) 如果一次比較操作之后清除了 C 標志設置了 Z 標志。   PL : 正號 如果一次算術操作之后清除了 N。出于定義‘正號’的目的,零是正數的原因是它不是負數...   MI : 負號 如果一次算術操作之后設置了 N 標志。   CS : 進位設置 如果一次算術操作或移位操作之后設置了 C 標志,操作的結果不能表示為 32bit。你可以把 C 標志當作結果的第 33 位。   CC : 進位清除 與 CS 相反。   GE : 大于或等于(有符號) 如果一次比較之后...
設置了 N 標志設置了 V 標志
或者...
清除了 N 標志清除了 V 標志。   GT : 大于(有符號) 如果一次比較之后...
設置了 N 標志設置了 V 標志
或者...
清除了 N 標志清除了 V 標志
并且...
清除了 Z 標志。   LE : 小于或等于(有符號) 如果一次比較之后...
設置了 N 標志清除了 V 標志
或者...
清除了 N 標志設置了 V 標志
并且...
設置了 Z 標志。   LT : 小于(有符號) 如果一次比較之后...
設置了 N 標志清除了 V 標志。
或者...
清除了 N 標志設置了 V 標志。   AL : 總是 缺省條件,所以不用明顯聲明。   NV : 從不 不是特別有用,它表示應當永遠不執行這個指令。是窮人的 NOP。
包含 NV 是為了完整性(與 AL 相對),你不應該在你的代碼中使用它。 有一個在最后的條件代碼 S,它以相反的方式工作。當用于一個指令的時候,導致更改狀態標志。這不是自動發生的 - 除非這些指令的目的是設置狀態。例如:

ADD     R0, R0, R1

  ADDS    R0, R0, R1

  ADDEQS  R0, R0, R1

第一個例子是一個基本的加法(把 R1 的值增加到 R0),它不影響狀態寄存器。

第二個例子是同一個加法,只不過它導致更改狀態寄存器。

最后一個例子是同一個加法,更改狀態寄存器。不同在于它是一個有條件的指令。只有前一個操作的結果是 EQ (如果設置了 Z 標志)的時候它才執行。

下面是條件執行的一個工作中的例子。你把寄存器 0 與存儲在寄存器 10 中內容相比較。

如果不等于 R10,則調用一個軟件中斷,增加它并分支回來再次做這些。否則清除 R10 并返回到調用它的那部分代碼(它的地址存儲在 R14)。

\ 條件執行的一個例子

  .loop                           ; 標記循環開始位置
  CMP     R0, R10                 ; 把 R0 與 R10 相比較
  SWINE   &40017                  ; 不等于: 調用 SWI &40017
  ADDNE   R0, R0, #1              ;         向 R0 加 1
  BNE     loop                    ;         分支到 'loop'
  MOV     R10, #0                 ; 等于  : 設置 R10 為零
  LDMFD   R13!, {R0-R12,PC}       ;         返回到調用者

注解:
SWI 編號就象我寫的這樣。在 RISC OS 下,它是給 Econet_DoImmediate 的編號。不要字面的接受它,這只是一個例子!
你可能以前沒見過 LDMFD,它從棧中裝載多個寄存器。在這個例子中,我們從一個完全正式的棧中裝載 R0 至 R12 和 R14。關于寄存器裝載和存儲的更多信息請參閱 str.html。
我說要裝載 R14。那么為什么要把它放入 PC 中? 原因是此時 R14 存儲的值包含返回地址。我們也可以采用:
LDMFD R13!, {R0-R12,R14}
MOV PC, R14

但是直接恢復到 PC 中可以省略這個 MOV 語句。
最后,這些寄存器很有可能被一個 SWI 調用所占用(依賴于在調用期間執行的代碼),所以你最好把你的重要的寄存器壓入棧中,以后在恢復它們。

SWI 指令

SWI : 軟件中斷

(Software Interrupt)

SWI{條件}  <24 位編號>

指令格式

這是一個簡單的設施,但可能是最常用的。多數操作系統設施是用 SWI 提供的。沒有 SWI 的 RISC OS 是不可想象的。

Nava Whiteford 解釋了 SWI 是如何工作的(最初在 Frobnicate issue 12?)...

 

SWI 是什么?

SWI 表示 Software Interrupt。在 RISC OS 中使用 SWI 來訪問操作系統例程或第三方生產的模塊。許多應用使用模塊來給其他應用提供低層外部訪問。

SWI 的例子有:

文件器 SWI,它輔助讀寫磁盤、設置屬性等。
打印機驅動器 SWI,用來輔助使用打印并行端口。
FreeNet/Acorn TCP/IP 協議棧 SWI,用 TCP/IP 協議在 Internet 上發送和接收數據。

在以這種方式使用的時候,SWI 允許操作系統擁有一個模塊結構,這意味著用來建立完整的操作系統的所需的代碼可以被分割成許多小的部分(模塊)和一個模塊處理程序(handler)。

當 SWI 處理程序得到對特定的例程編號的一個請求的時候,它找到這個例程的位置并執行它,并傳遞(有關的)任何數據。

它是如何工作的?

首先查看一下如何使用它。一個 SWI 指令(匯編語言)看起來如下:

SWI &02

SWI "OS_Write0"

這些指令實際上是相同的,將被匯編成相同的指令。唯一的不同是第二個指令使用一個字符串來表示 SWI 編號 &02。

在使用采用了字符串編號的程序的時候,在執行之前首先查找這個字符串。 

在這里我們不想處理字符串,因為它不能給出它要進行什么的一個真實表示。它們通常用于增進一個程序的清晰程度,但不是實際執行的指令。

讓我們再次看一下第一個指令:

SWI &02

這是什么意思? 字面的意思是進入 SWI 處理程序并傳遞值 &02。在 RISC OS 中這意味著執行編號是 &02 的例程。

它是如何這么作的? 它如何傳遞 SWI 編號和進入 SWI 處理程序?

如果你查看內存的開始 32 字節(位于 0-&1C)并反匯編它們(查開實際的 ARM 指令)你將見到如下:

 

地址       內容               反匯編
00000000 : 0..? : E5000030 : STR     R0,[R0,#-48]
00000004 : .ó?? : E59FF31C : LDR     PC,&00000328
00000008 : .ó?? : E59FF31C : LDR     PC,&0000032C
0000000C : .ó?? : E59FF31C : LDR     PC,&00000330
00000010 : .ó?? : E59FF31C : LDR     PC,&00000334
00000014 : .ó?? : E59FF31C : LDR     PC,&00000338
00000018 : .ó?? : E59FF31C : LDR     PC,&0000033C
0000001C :  2?? : E3A0A632 : MOV     R10,#&3200000

讓我們仔細看一下。

除了第一個和最后一個指令之外(它們是特殊情況)你見到的都是把一個新值裝載到 PC (程序計數器)的指令,它們告訴計算機到哪里去執行下一個指令。

還展示了這個值是從內存中的一個地址接受來的。(你可以在 !Zap 主菜單上使用“Read Memory”選項去自己查看一下。)

這看起來好象與 SWI 沒多少關系,下面做進一步的說明。

一個 SWI 所做的一切就是把模式改變成超級用戶并設置 PC 來執行在地址 &08 處的下一個指令!

把處理器轉換到超級用戶模式會切換掉兩個寄存器 r13 和 r14 并用 r13_svc 和 r14_svc 替換它們。

在進入超級用戶模式的時候,還把 r14_svc 設置為在這個 SWI 指令之后的地址。

這個實際上就象一個連接到地址 &08 的分支指令(BL &08),但帶有用于一些數據(SWI 編號)的空間。

象我說過的那樣,地址 &08 包含跳轉到另一個地址的一個指令,就是實際的 SWI 程序的地址!

此時你可能會想“稍等一會! 還有 SWI 編號呢?”。實際上處理器忽略這個值本身。SWI 處理程序使用傳遞來的 r14_svc 的值來獲取它。

下面是完成它的步驟(在存儲寄存器 r0-r12 之后):

它從 r14 中減去 4 來獲得 SWI 指令的地址。
把這個指令裝載到一個寄存器。
清除這個指令的高端 8 位,去掉了 OpCode 而只剩下的 SWI 編號。
使用這個值來找到要被執行的代碼的例程的地址(使用查找表等)。
恢復寄存器 r0-r12。
使處理器離開超級用戶模式。
跳轉到這個例程的地址。

容易吧! ;)

下面是一個例子,來自 ARM610 datasheet:

0x08 B Supervisor

EntryTable
 DCD ZeroRtn
 DCD ReadCRtn
 DCD WriteIRtn

 ...

Zero   EQU 0
ReadC  EQU 256
WriteI EQU 512
 
; SWI 包含需要的例程在位 8-23 中和數據(如果有的話)在位 0-7 中。
; 假定 R13_svc 指向了一個合適的棧

STMFD R13, {r0-r2 , R14}
 ; 保存工作寄存器和返回地址。
LDR R0,[R14,#-4]
 ; 得到 SWI 指令。
BIC R0,R0, #0xFF000000
 ; 清除高端的 8 位。
MOV R1, R0, LSR #8
 ; 得到例程偏移量。
ADR R2, EntryTable
 ; 得到入口表(EntryTable)的開始地址。
LDR R15,[R2,R1,LSL #2]
 ; 分支到正確的例程

WriteIRtn
 ; 寫 R0 中的位 0 - 7 中的字符。

.............
 LDMFD R13, {r0-r2 , R15}^
 ; 恢復工作空間,并返回、恢復處理器模式和標志。

這就是 SWI 指令的基本處理步驟。

總結

以上是生活随笔為你收集整理的ARM指令集详解(超详细!带实例!)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

天天爱天天射天天干天天 | 国产这里只有精品 | 国产亚洲综合在线 | 国产美女主播精品一区二区三区 | 亚洲高清久久久 | 91久久精品一区二区三区 | 成人午夜精品福利免费 | 国产人成一区二区三区影院 | 国产亚洲永久域名 | 欧美日韩精品在线视频 | 91精品一区二区三区蜜臀 | 天堂网一区二区 | 中文字幕 国产视频 | 在线日本看片免费人成视久网 | 男女拍拍免费视频 | 欧美精品在线观看 | 国产伦精品一区二区三区… | 国产美女被啪进深处喷白浆视频 | 国产精品午夜免费福利视频 | 美女视频是黄的免费观看 | 激情av资源 | 国产视频久 | 久久99精品国产麻豆宅宅 | 久久免费精品一区二区三区 | 欧美精品乱码久久久久久 | 日韩精品一区二区在线观看 | 91九色国产 | 综合天天| 久久久精品视频网站 | 中文字幕色站 | 久久久噜噜噜久久久 | 国产精品久久久久影视 | 中文字幕在线观看资源 | 久草在线一免费新视频 | 日韩亚洲在线 | 国产在线精品观看 | 亚洲五月 | 久久精品国产成人精品 | 精品uu| av888av.com| aaaaaa毛片| 欧美成人精品欧美一级乱黄 | 亚洲va欧洲va国产va不卡 | 国产在线p | 97激情影院| 久久免费观看少妇a级毛片 久久久久成人免费 | 一级片黄色片网站 | 国产午夜精品一区二区三区嫩草 | 亚洲三级影院 | 午夜精品久久久久久久久久久久 | 国产在线第三页 | 亚洲热视频 | 亚洲作爱视频 | 日本中文乱码卡一卡二新区 | 五月婷婷在线观看视频 | 日韩一区精品 | av不卡中文 | 久久在线 | 国产精品久久久久一区 | 综合色中文| av黄色国产| 中文字幕av在线免费 | 免费av观看 | 超碰在线最新地址 | 欧美疯狂性受xxxxx另类 | 丁香六月天 | 日韩三级免费观看 | 97在线观| 精品久久久免费 | 伊人天天| 91在线国内视频 | 狠狠色噜噜狠狠狠狠2022 | 精品国内自产拍在线观看视频 | 狠狠躁18三区二区一区ai明星 | 成人黄色免费在线观看 | 最新国产在线视频 | 最新高清无码专区 | 亚洲在线激情 | 8x成人在线| 欧美国产日韩一区二区三区 | 黄a在线看 | 精品国产一二三四区 | 一区二区视频在线观看免费 | a黄色一级片 | 欧美ⅹxxxxxx | 免费十分钟| 99精品国产一区二区三区不卡 | 一级大片在线观看 | 激情五月五月婷婷 | 色99视频| 国产在线国偷精品产拍 | 在线精品亚洲一区二区 | 亚洲jizzjizz日本少妇 | 婷婷色吧 | 亚洲成人免费观看 | 麻花豆传媒一二三产区 | 国产成人精品亚洲a | 国产 字幕 制服 中文 在线 | 天天干天天草天天爽 | 在线观看免费色 | aaaaaa毛片| 国产一区在线视频观看 | 中文乱幕日产无线码1区 | 亚洲va天堂va欧美ⅴa在线 | av在线色| 免费h精品视频在线播放 | av高清不卡 | 91精品欧美 | 久久影院精品 | 亚洲最新视频在线 | av成人资源| 久久99日韩 | av电影av在线| 成年人免费在线观看 | 国产亚洲精品bv在线观看 | 国产一级视频在线 | 欧美日韩国产亚洲乱码字幕 | 午夜精品视频在线 | av日韩国产| 色噜噜在线观看视频 | 国产不卡精品 | 日韩在线电影 | 超碰人人在 | 国内外激情视频 | 在线视频精品 | 日本在线观看中文字幕 | 成人在线一区二区 | 精品国产乱码久久久久久1区二区 | 99久久影视| 91传媒在线播放 | 国产亚洲观看 | 天天干天天拍天天操天天拍 | 亚洲视频一级 | 久久成人精品电影 | 亚洲精品国偷拍自产在线观看蜜桃 | 国内久久久久久 | 国产日产av| 人人爽夜夜爽 | 国产日产精品一区二区三区四区 | 99在线视频网站 | 婷婷av色综合 | www.天天射 | 成人四虎影院 | 中文字幕人成人 | 婷婷伊人综合 | 黄色特级片 | 国产成人黄色在线 | 国产h在线观看 | 久久综合色天天久久综合图片 | 日韩在线电影观看 | 精品久久久久久亚洲综合网站 | 亚洲精品久久久久中文字幕m男 | 久久久久久久看片 | 四虎国产 | 午夜精品久久久99热福利 | 黄色在线观看免费 | 色中色亚洲 | 久久久久久在线观看 | 中文字幕在线观看国产 | 亚洲精品免费视频 | 色综合欧洲 | 欧美一级欧美一级 | 免费观看成人网 | 国产在线色视频 | 日本女人在线观看 | 国产成人久久精品亚洲 | 91亚洲欧美 | 日日日日干 | 久久久精品国产免费观看一区二区 | 色婷婷色| 久久久夜色 | 夜夜夜夜爽| 六月丁香色婷婷 | bbb搡bbb爽爽爽| 国产在线欧美日韩 | 97超碰国产精品女人人人爽 | 国产在线探花 | 精品国产中文字幕 | 婷婷丁香在线视频 | 91av在线视频免费观看 | 波多野结衣一区 | 亚洲人成人在线 | 天天色天| 不卡的av片 | 国产亚洲精品久久久久久无几年桃 | 黄色午夜 | 免费看一级特黄a大片 | 国产福利在线 | 欧美精品三级在线观看 | 米奇影视7777 | www狠狠操| 天天操婷婷 | 亚洲日本va在线观看 | 天天操天天弄 | 337p西西人体大胆瓣开下部 | 狠狠干 狠狠操 | 青青河边草观看完整版高清 | av千婊在线免费观看 | 久久久精品网 | 日韩网站在线免费观看 | 欧美日本啪啪无遮挡网站 | 亚洲成a人片综合在线 | 国产一区二区精品久久91 | 国产精品一区二区三区99 | 欧美人zozo | 亚洲免费在线播放视频 | 国产自偷自拍 | 亚洲,国产成人av | 最近中文字幕高清字幕免费mv | 国产 在线 日韩 | 欧美成人精品三级在线观看播放 | 亚在线播放中文视频 | 在线观看自拍 | 在线 视频 亚洲 | 91大神精品视频在线观看 | 久久精品99久久 | 婷婷激情小说网 | 99国产视频在线 | 欧美在线18 | 亚洲视频 在线观看 | 91精品国产91久久久久福利 | 色中色资源站 | 97国产在线观看 | 久久久久 免费视频 | 久草视频在线免费看 | 国产精品久久久久久欧美 | ww视频在线观看 | 国产精品一区二区在线 | 久操伊人| 黄色免费看片网站 | 人人插人人插 | 成人综合婷婷国产精品久久免费 | 免费看黄色91 | 国产精品女同一区二区三区久久夜 | 色偷偷中文字幕 | 天堂在线免费视频 | 久久久久久久久毛片 | wwwwww黄 | 91在线看视频免费 | 亚洲一级黄色大片 | 97精品视频在线播放 | 国产成人av在线 | av片在线观看免费 | 天天艹天天爽 | 久久久久久国产精品亚洲78 | 992tv人人网tv亚洲精品 | 中文字幕在线乱 | 久二影院 | 久久国产亚洲精品 | 精品视频免费久久久看 | 国产一二区精品 | 91精品福利在线 | 狠狠操操网| 伊人色综合网 | 久久精品成人热国产成 | 天天拍天天操 | 国产精品久久一区二区三区, | 日韩手机在线观看 | 欧美一区二区三区四区夜夜大片 | 国产精品久久久久久久久大全 | 国产伦理精品一区二区 | 日韩aa视频| 奇米影视在线99精品 | 狠狠五月婷婷 | 午夜天天操 | 中文字幕在线观看免费高清电影 | 国产精品99久久久久久有的能看 | 99精品国产一区二区三区麻豆 | 美女国产| 国产在线黄 | av中文字幕免费在线观看 | 免费 在线 中文 日本 | 欧美日韩一区二区视频在线观看 | 久久露脸国产精品 | 96看片| 久久精品人 | 成人影音av | 激情视频国产 | 国产在线第三页 | 日韩av电影中文字幕在线观看 | 国产中文字幕在线免费观看 | 亚洲欧美成人 | 亚洲综合视频在线观看 | 日本久久久亚洲精品 | av观看在线观看 | 亚洲高清91| 最新久久久 | 99久久精品费精品 | 久久精品专区 | 国产精品9999 | 一区二区视频在线免费观看 | 国产手机视频在线观看 | 亚洲欧美日韩国产一区二区 | 在线观看香蕉视频 | 亚洲综合少妇 | 亚洲国产精品视频在线观看 | 精品免费视频123区 午夜久久成人 | 美女网站视频一区 | 黄色成人av| 毛片播放网站 | 久久久久久国产精品美女 | 在线视频区 | 国产91电影在线观看 | 久久视频精品在线 | 日韩美女久久 | 欧美日韩国产xxx | 欧美a级成人淫片免费看 | ,午夜性刺激免费看视频 | 国产精品久久一区二区三区, | 久久人人爽人人人人片 | 黄色精品视频 | 狠狠干在线 | 久久激情片 | av最新资源| 97在线精品国自产拍中文 | 乱男乱女www7788 | 国产又粗又硬又爽的视频 | 欧美日韩精品国产 | 一区二区视频在线观看免费 | 日本黄色一级电影 | 精品久久久久久国产91 | 日韩精品免费在线观看 | 色婷婷电影 | 天天插伊人 | 精品9999 | 国产精品色婷婷视频 | av天天色 | 国产视频欧美视频 | 97电院网手机版 | 中文字幕在线观看2018 | 久久久久久久电影 | 欧美在线aaa | 国产成人综合图片 | av黄色av| 亚洲欧美视频在线播放 | 国产亚洲精品久久久久久无几年桃 | 一二三四精品 | 超碰在线资源 | 在线观看视频国产 | 久久激情片 | 国产精品久久久久永久免费看 | 亚洲欧洲日韩 | 奇米影视777四色米奇影院 | 成人国产精品久久久久久亚洲 | 国产三级视频在线 | 91麻豆免费看 | 亚洲专区在线视频 | 永久免费av在线播放 | 二区三区在线视频 | 成人欧美日韩国产 | a电影免费看 | 人人草在线观看 | 一区二区中文字幕在线播放 | 人成电影网 | 久久国产成人午夜av影院潦草 | 国产高清精 | 国产在线视频一区二区 | 亚洲国产精品免费 | 日韩精品视频在线观看网址 | 91av久久| 97综合视频| 亚洲色图 校园春色 | 天天干天天天 | av天天在线观看 | 国产午夜在线观看视频 | 日韩天堂网 | 久久999精品 | 2023av| 69av久久| 国产精品理论视频 | 欧美激情xxxx| 中文字幕人成不卡一区 | 天天爽综合网 | 国产精品一区二区视频 | 国产91精品一区二区麻豆网站 | 日韩一区二区三免费高清在线观看 | 麻豆视频免费观看 | 日韩色综合网 | 天堂av在线 | 久久伦理电影网 | 天天综合久久 | 亚洲精品网站 | 亚洲黄色在线播放 | 日韩在线视频不卡 | 91丨九色丨高潮丰满 | 婷婷在线看| 深夜国产在线 | 欧美日韩国产精品久久 | 国产精品黄色影片导航在线观看 | 国产精品视频久久久 | 久久国产热 | av中文字幕在线观看网站 | 欧美孕交vivoestv另类 | 97精品国产aⅴ | 久草在在线视频 | 99久久精品免费看国产四区 | 国产精品视频地址 | 91在线免费视频 | 国产精品va | 97视频在线观看网址 | 91麻豆网| 中文字幕91视频 | 免费视频91 | 国产免费黄视频在线观看 | 亚洲va欧美va人人爽春色影视 | 91观看视频 | 久久精品精品电影网 | 久久亚洲专区 | 欧美xxxxx在线视频 | 亚洲九九九在线观看 | 中文在线字幕免费观 | 欧美日韩一区二区免费在线观看 | 亚洲精品a区 | 久久成人高清视频 | 免费视频成人 | 97夜夜澡人人爽人人免费 | 久久夜色精品国产欧美乱 | 国产精品爽爽爽 | 国产精品久久久久久久久久不蜜月 | 国内久久久久久 | 在线播放国产一区二区三区 | 日韩在线视频不卡 | 国产自在线 | 亚洲综合五月天 | 丁香五月亚洲综合在线 | 午夜精品一区二区三区在线视频 | 91精品对白一区国产伦 | 午夜免费在线观看 | 久久99热这里只有精品国产 | 亚洲国产欧美在线人成大黄瓜 | 久久国产精品一国产精品 | 尤物九九久久国产精品的分类 | av电影免费在线播放 | 69国产盗摄一区二区三区五区 | 五月综合网站 | 天天射天天做 | 在线 视频 亚洲 | 狠狠综合久久av | 久久er99热精品一区二区三区 | 国产视频不卡一区 | 97香蕉视频 | 国产永久免费观看 | 久久久免费视频播放 | av黄色免费在线观看 | 成年美女黄网站色大片免费看 | 中文字幕久久精品亚洲乱码 | 丁香av | 黄色三级在线 | 最近免费中文字幕mv在线视频3 | 国产成人一二片 | av字幕在线 | 一区三区在线欧 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产精品高潮在线观看 | 色av网站 | 最新国产精品亚洲 | 亚洲尺码电影av久久 | 玖玖视频免费在线 | 在线观看黄 | av大片网址 | 精品高清视频 | 免费视频久久久久 | 婷婷网站天天婷婷网站 | 综合久久久久 | 手机av在线免费观看 | 国产精品免费视频久久久 | 中文字幕亚洲在线观看 | 亚洲电影在线看 | 99精品在线观看视频 | 婷婷丁香激情五月 | 天天天天天干 | 国产精品igao视频网入口 | 91精选| 在线视频日韩 | 国产高清专区 | 免费精品国产 | 在线亚洲欧美日韩 | 色综合天天综合 | 天天操福利视频 | 国产精品成人国产乱一区 | 99精品国产一区二区三区不卡 | 国产999精品久久久久久麻豆 | 久久av在线| 久久久久久久av | 国产无遮挡又黄又爽馒头漫画 | 亚洲精品综合一区二区 | 亚洲一区二区三区精品在线观看 | 在线综合 亚洲 欧美在线视频 | 亚洲精品视频在线观看免费视频 | 在线观看中文字幕网站 | 九九视频精品免费 | www.国产视频 | 日韩动态视频 | 精品久久久免费视频 | 四虎成人免费影院 | 日韩av高清在线观看 | 天天射天天干天天插 | 精品免费观看 | 欧美小视频在线观看 | 日韩欧美亚州 | 少妇按摩av| 中文字幕乱码电影 | 狠狠操天天操 | 91精品一 | 亚洲 欧美日韩 国产 中文 | 亚洲精品久久视频 | 在线国产黄色 | 亚州精品天堂中文字幕 | 伊人久久av | 中文字幕一区二区三区四区在线视频 | 日韩精品在线免费观看 | 久草视频看看 | 在线不卡a | 日韩.com| 日本精品一区二区 | 国产午夜精品久久久久久久久久 | 一本一本久久a久久精品综合小说 | 91网站免费观看 | 亚洲精品美女久久久久 | 日韩一区精品 | 不卡电影免费在线播放一区 | 色av婷婷| 九九热视频在线播放 | 久久激情精品 | 久操中文字幕在线观看 | 亚洲精品一区中文字幕乱码 | 婷婷久久网 | 日av免费| 亚洲欧美日本一区二区三区 | av观看久久久 | 激情网色 | 国产美女视频免费 | 亚洲日本成人网 | 国产精品成人久久久久久久 | 国产97在线播放 | 久久成人亚洲欧美电影 | 99在线视频播放 | 干天天| 亚洲激情一区二区三区 | av大片免费| 四虎影视精品 | 久久久精品国产一区二区三区 | 欧美一二三区在线播放 | 亚洲国产精品成人av | 国产精品久久久999 国产91九色视频 | 波多野结衣视频一区二区 | 色婷婷综合久久久久中文字幕1 | 亚洲人久久 | 天天综合天天做天天综合 | 久久久久久看片 | 久久狠狠一本精品综合网 | 国产午夜不卡 | 亚洲精品视频第一页 | 丝袜精品视频 | av免费高清观看 | 国产日韩精品一区二区在线观看播放 | 亚洲视频一区二区三区在线观看 | 欧美一区中文字幕 | 免费看网站在线 | 亚洲自拍偷拍色图 | 成年人视频免费在线播放 | 久久久九九 | 天天搞天天干天天色 | 欧美经典久久 | 狠狠干婷婷 | 久久精品系列 | 天天操天天弄 | 国产伦理精品一区二区 | 狠狠色狠狠色综合系列 | 日本免费久久高清视频 | 最近免费中文字幕mv在线视频3 | 亚洲第一成网站 | 欧美视频一区二 | 亚洲精品国产成人av在线 | 免费看麻豆| 国产一级久久久 | 少妇视频一区 | 日本xxxx裸体xxxx17 | 97超碰总站 | 精品亚洲免费视频 | 六月丁香激情网 | 久久久久国产一区二区三区四区 | 亚洲精品一区二区三区高潮 | 91在线视频网址 | 亚洲午夜久久久久久久久 | 狠狠操导航 | 91麻豆精品国产91久久久无限制版 | 91大神在线看| 月丁香婷婷 | 国产福利91精品张津瑜 | 日日摸日日 | 日韩欧美视频在线播放 | 婷婷丁香在线观看 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 国产精品96久久久久久吹潮 | 8x8x在线观看视频 | 国产资源免费 | 欧美日韩中文字幕在线视频 | 99国产精品免费网站 | 日韩簧片在线观看 | 色综合久久久久久中文网 | 91在线观看视频 | 免费在线观看视频a | 99视频国产在线 | 国产精品婷婷午夜在线观看 | 国产第一页福利影院 | 伊人婷婷 | 正在播放日韩 | 日韩久久精品一区二区 | 中文字幕影片免费在线观看 | 亚洲男女精品 | 97超碰影视 | 久久久不卡影院 | 日本激情动作片免费看 | 99久久国产免费免费 | 久久手机精品视频 | 久久视频在线观看免费 | 国产美腿白丝袜足在线av | 2019国产精品| 免费美女久久99 | 免费看v片 | 日韩一级片大全 | 欧美日韩在线精品 | 丝袜少妇在线 | 日韩成片 | 日韩欧美亚州 | 视频一区视频二区在线观看 | 日韩欧美一区二区在线播放 | 一区二区视频网站 | 99夜色| 国产黄色片免费在线观看 | 欧美地下肉体性派对 | 麻豆久久| www国产精品com | 中文字幕制服丝袜av久久 | 亚洲高清视频在线观看 | 午夜黄色大片 | 天天躁天天狠天天透 | 亚洲一区黄色 | se视频网址 | 激情黄色av | av电影在线不卡 | 97色婷婷人人爽人人 | 日韩视频一二三区 | 国产成人综合在线观看 | 国产黄色资源 | 日韩av不卡在线观看 | 日韩系列 | 久久视频免费在线观看 | 久久久久久国产精品 | 欧美日韩高清一区 | 日本成人中文字幕在线观看 | 五月婷综合 | www.超碰97.com | 在线免费观看视频一区二区三区 | 在线成人观看 | 手机在线小视频 | 在线观看国产区 | 在线观看视频在线观看 | 99久久久久久国产精品 | 亚洲激情久久 | 亚洲午夜激情网 | 狠狠的干狠狠的操 | 国产小视频在线免费观看 | 免费日韩三级 | 亚洲精品xxx | 99热精品免费观看 | 成年人免费在线播放 | 成人国产精品免费 | 亚洲视频精品 | 久久久在线 | 国产精品成人a免费观看 | 成人亚洲精品国产www | 人人玩人人添人人澡超碰 | 草免费视频 | 午夜久久久影院 | 日日夜夜精品免费观看 | 日韩精品一区二区久久 | 在线免费黄网站 | 婷婷九月激情 | 爱av在线网| 国产日产精品久久久久快鸭 | 波多野结衣视频一区二区三区 | 亚洲专区免费观看 | 亚洲理论片在线观看 | 成人久久18免费网站 | av丝袜制服 | 国产一卡二卡四卡国 | 欧美午夜剧场 | 中文字幕免费成人 | 在线看国产日韩 | 成人国产网址 | 色在线国产| 中文字幕av全部资源www中文字幕在线观看 | 日韩久久影院 | 激情久久伊人 | 国产一级黄 | 黄色免费在线视频 | 亚洲国产中文字幕在线 | 亚洲精品小视频 | 日本99精品 | 啪啪午夜免费 | 成年人三级网站 | 在线观看福利网站 | 欧美成亚洲 | 人人干人人超 | 在线视频黄 | 2024国产精品视频 | 91大神精品视频在线观看 | 在线电影91 | 国精产品999国精产品岳 | 麻豆91在线看 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 亚洲精品网站在线 | 天天夜操| 亚洲精品视频大全 | 99精品视频在线观看视频 | 狠狠干综合 | 天天爽夜夜爽人人爽一区二区 | 国产97碰免费视频 | 日本三级不卡 | 久久久麻豆精品一区二区 | 最近在线中文字幕 | 成人毛片一区 | 激情视频91 | 国产精品综合在线观看 | 欧美另类高清 | 99精品观看| 视频精品一区二区三区 | 久久综合色一综合色88 | 国产精品永久 | 国产午夜视频在线观看 | 中文字幕在线成人 | 日日夜夜噜 | 久久久18| 欧美小视频在线 | 在线视频一二三 | 欧美在线18 | 亚洲成av人片在线观看无 | 国产999精品 | 精品亚洲男同gayvideo网站 | 久久国产综合视频 | 天堂在线一区二区三区 | sesese图片| 成人久久亚洲 | 日韩av中文在线 | 91av视频在线播放 | 五月婷婷开心中文字幕 | 亚洲成av人影院 | 天天看天天操 | 亚洲黄a| 国产人在线成免费视频 | 国产视频1区2区3区 久久夜视频 | 亚洲成人网av| 国产高清精品在线观看 | 欧美日一级片 | 久久久久久免费毛片精品 | 欧美日韩3p | 国产精品美女久久久久久久 | 日韩精品视频在线观看免费 | 美女黄频免费 | 国产色拍拍拍拍在线精品 | 欧美日韩亚洲第一页 | 日韩理论在线播放 | 人人射人人爽 | 国产精品网站 | 日韩精品视频免费专区在线播放 | 99久久99久久综合 | 狠狠色丁香婷婷综合最新地址 | 精品一二 | 久久久麻豆精品一区二区 | 国产精品日韩在线播放 | 日韩精品一区电影 | 婷婷亚洲综合 | 久久人人添人人爽添人人88v | 综合在线亚洲 | 国产精品激情在线观看 | 99色国产| 国产精品系列在线播放 | 欧美a级片免费看 | 97超碰资源总站 | 久久精品免费观看 | 成人毛片网| 欧美 日韩 成人 | 在线免费视 | 奇米网8888 | 国产精品久久久久9999吃药 | 久久精品一区二区三区四区 | 国产特级毛片aaaaaa | 丁香婷婷色月天 | 免费在线观看一级片 | 亚洲综合在线五月 | 久久国产一二区 | 免费精品视频 | 亚洲国产精品成人va在线观看 | 国产999精品久久久久久 | 伊人天天 | 国产一区视频在线观看免费 | 伊人夜夜| 美女在线黄| 日日夜色| 久久艹国产 | 国产一区二区三区在线 | 国产黄色av网站 | 国产成人精品午夜在线播放 | 色婷婷综合视频在线观看 | 国产精品久久久久久久久费观看 | 国产v欧美| 中文字幕第一页在线 | aaa毛片视频| 国产成人免费网站 | 久久精品免费看 | 国产亚洲精品久久19p | 中文字幕在线观看三区 | 国产成人三级一区二区在线观看一 | 国产a精品| 日韩免费成人av | 97在线成人| 99产精品成人啪免费网站 | 开心综合网| 色鬼综合网 | 美女啪啪图片 | 91视频免费网址 | 成av人电影 | 丁香六月婷婷开心 | 日本特黄特色aaa大片免费 | 日韩欧美在线综合网 | 97干com | 日韩欧美高清在线 | 热久久这里只有精品 | 亚洲欧洲国产精品 | 午夜黄色一级片 | 91在线porny国产在线看 | 久久久高清 | 深夜福利视频一区二区 | 天天做日日爱夜夜爽 | 国产一级二级三级在线观看 | 日日干精品 | 日韩精品视频一二三 | 米奇影视7777 | 日本中文字幕在线播放 | 在线va视频 | 伊人久久影视 | 久久久999免费视频 日韩网站在线 | 欧美日韩国产一区二区三区在线观看 | 精品久久久免费 | 911久久香蕉国产线看观看 | 亚洲香蕉视频 | 五月婷婷激情六月 | 丁香六月国产 | 欧美日韩高清一区二区 国产亚洲免费看 | 久久精品精品电影网 | 99在线视频免费观看 | 97视频免费在线 | 午夜av免费在线观看 | 国产又粗又猛又爽又黄的视频先 | 麻豆一精品传二传媒短视频 | 黄在线免费看 | 99久久99热这里只有精品 | 一区二区三区在线不卡 | 综合影视 | 久久99国产精品免费 | 五月开心六月婷婷 | 久久国产热视频 | 日本aaa在线观看 | 伊人视频 | h动漫中文字幕 | 婷婷av网站 | 免费久久视频 | av黄色免费网站 | 中文字幕无吗 | 日韩黄色在线电影 | 99视频在线免费播放 | 九九免费在线观看视频 | 91av在线国产 | 国产精品剧情 | 日韩二区在线观看 | 成人九九视频 | 色婷婷狠狠五月综合天色拍 | 日本中文字幕视频 | 五月开心网 | av在线小说 | 国产精品一区二区 91 | 亚洲综合国产精品 | 99久久9| 九七在线视频 | 久久久久久久久国产 | 久草视频在线播放 | 国产精品精品久久久久久 | 视频国产一区二区三区 | 98久9在线 | 免费 | 成人午夜电影久久影院 | 日韩va欧美va亚洲va久久 | 欧美日韩高清在线观看 | 色 免费观看 | 美女免费黄视频网站 | 久久婷婷影视 | 中文字幕在线播放视频 | 99久久久国产免费 | 亚洲国产小视频在线观看 | 中文字幕一区二区三 | 天天干天天插伊人网 | 日本99精品 | 91看片在线看片 | 成年人视频在线 | 黄色电影小说 | 九九日韩 | 8090yy亚洲精品久久 | 亚洲精品在 | 91视频麻豆| 麻豆传媒一区二区 | 久久五月天色综合 | 成人黄在线观看 | av综合av | 天天插天天 | 96av麻豆蜜桃一区二区 | 欧美天天干 | 亚洲成av人片在线观看 | 探花系列在线 | www国产亚洲精品久久麻豆 | aa一级片| 久久精品99久久 | 日韩av成人在线观看 | 91九色视频导航 | 久久国产欧美日韩 | 国产免费久久精品 | 免费网址你懂的 | 久久综合婷婷国产二区高清 | 久久99精品国产91久久来源 | 91精品久久久久久久久 | 免费一级黄色 | 中文乱码视频在线观看 | 黄色电影在线免费观看 | 国产精品一区二区三区在线播放 | 欧美精品久久久久久久久老牛影院 | 人人看人人艹 | 日韩av免费在线看 | 久久夜夜操 | 激情婷婷综合网 | 成全在线视频免费观看 | 久久福利剧场 | 亚洲91精品 | 美州a亚洲一视本频v色道 | 综合久久精品 | 亚洲成av人片在线观看无 | 色悠悠久久综合 | 一区二区日韩av | 亚洲精品人人 | 国产欧美日韩一区 | 97视频资源 | 婷婷免费在线视频 | 99视频在线免费 | 日韩精品免费一线在线观看 | 中文字幕av最新更新 | 9999亚洲 | 久久久久 免费视频 | 欧美日韩国产页 | 探花视频在线观看免费 | 色就色,综合激情 | 国产免费精彩视频 | 久草在线99 | 亚洲专区在线播放 | 91一区啪爱嗯打偷拍欧美 | 久久综合久久综合久久综合 | 丁香六月婷婷激情 | 国产精品久久久一区二区三区网站 | 亚洲国产精品99久久久久久久久 | 亚洲在线成人精品 | 天天久久综合 | 激情久久伊人 | 四虎影视精品 | 国产亚洲精品久久久久久无几年桃 | 91三级视频| 欧美激情精品久久久久久免费印度 | 国产亚洲视频在线免费观看 | 中文字幕乱码电影 | 九九99视频 | 日本性xxxxx 亚洲精品午夜久久久 | 国色天香永久免费 | 中文字幕亚洲字幕 | 99久久精品免费看国产一区二区三区 | 久久久精品视频成人 | 午夜精品电影一区二区在线 | 久久久久久97三级 | 91大神一区二区三区 | 五月天亚洲婷婷 | 国产午夜精品一区二区三区嫩草 | 日韩精品你懂的 | 日韩免费电影一区二区 | 成人精品国产免费网站 | 日韩高清三区 | 国产精品久久久久一区二区 | 欧美另类xxxxx| av成年人电影 | 综合久久婷婷 | 婷婷色中文网 | 国产亚洲精品久久19p | 亚洲日韩精品欧美一区二区 |