日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【ARM】ARM其它指令

發布時間:2024/4/24 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【ARM】ARM其它指令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

00. 目錄

文章目錄

    • 00. 目錄
    • 01. 特殊指令介紹
    • 02. CLZ 計算前導零數目
    • 03. 飽和指令介紹
    • 04. 附錄

01. 特殊指令介紹

Fmxr /Fmrx 指令是 NEON 下的擴展指令,在做浮點運算的時候,要先打開 vfp,因此需要用到 Fmxr 指令。
Fmxr:由 arm 寄存器將數據轉移到協處理器中。
Fmrx:由協處理器轉移到 arm 寄存器中。
如圖下圖所示為浮點異常寄存器格式。

如表 3-16 所示為 FPEXC 的位定義。

FPEXC<浮點異常寄存器>,該寄存器是一個可控制 SIMD 及 VFP 的全局使能寄存器,并指定了這些擴展技術是如何記錄的。

如果要打開 VFP 協處理器的話,可以用以下指令:

mov r0, #0x40000000 fmxr fpexc, r0 @ enable NEON and VFP coprocessor

02. CLZ 計算前導零數目

語法格式:

CLZ {cond} Rd,Rm @ 其中: @ cond 是一個可選的條件代碼。 @ Rd 是目標寄存器。 @ Rm 是操作數寄存器。

用法:

? CLZ 指令對 Rm 中的值的前導零進行計數,并將結果返回到 Rd 中,如果未在源寄存器中設置任何位,則該結果值為 32,如果設置了位 31,則結果值為 0。

條件標記:

? 該指令不會更改標記。

體系結構

? ARMv5 以上。

示例如圖 3-6 所示。

03. 飽和指令介紹

這是用來設計飽和算法的一組指令,所謂飽和是指出現下列 3 種情況:
(1)對于有符號飽和運算,如果結果小于-2^n ,則返回結果將為-2^n 。
(2)對于無符號飽和運算,如果整數結果是負值,那么返回的結果將為 0。
(3)對于結果大于 2^n -1 的情況,則返回結果將為 2^n -1。
只要出現這情況,就稱為飽和,并且飽和指令會設置 Q 標記,下面簡單介紹一下 QADD帶符號加法。
QSUB:帶符號減法。
QDADD:帶符號加倍加法。
QDSUB:帶符號加倍減法。
將結果飽和導入符號范圍(-2^31 ≤x≤2^31 -1)內。

語法格式:

op{cond} {Rd} ,Rm,Rn

其中:
q op 是 QADD、QSUB、QDADD、QDSUB 之一。
q cond 是一個可選的條件代碼。
q Rd 是目標寄存器。
q Rm、Rn 是存放操作數的寄存器(注:不要將 r15 用作 Rd、Rm 或 Rn)。

用法如下:
q QADD 指令可將 Rm 和 Rn 中的值相加。
q QSUB 指令可從 Rm 中的值減去 Rn 中的值。
q QDADD/QDSUB 指令涉及并行指令,因此這里不多做討論。

條件標記:

如果發生飽和,則這些指令設置 Q 標記,若要讀取 Q 標記的狀態,需要使用 MRS 指令。

體系結構:

? 該指令可用于 v5T-E 及 v6 或者更高版本的體系中。

程序示例:

QADD r0 ,r1,r9 QSUBLT r9,r0,r1

04. 附錄

11.1 ARM Architecture Reference Manual

總結

以上是生活随笔為你收集整理的【ARM】ARM其它指令的全部內容,希望文章能夠幫你解決所遇到的問題。

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