浮點數暫存器與指令
暫存器
AVX浮點體系結構允許資料儲存在16個YMM暫存器中
255 | 127 | 0 |
---|---|---|
%ymm0 | %xmm0 | 1st FP arg.返回值 |
%ymm1 | %xmm1 | 2nd FP引數 |
%ymm2 | %xmm2 | 3rd FP引數 |
%ymm3 | %xmm3 | 4th FP引數 |
%ymm4 | %xmm4 | 5th FP引數 |
%ymm5 | %xmm5 | 6th FP引數 |
%ymm6 | %xmm6 | 7th FP引數 |
%ymm7 | %xmm7 | 8th FP引數 |
%ymm8 | %xmm8 | 呼叫者儲存 |
%ymm9 | %xmm9 | 呼叫者儲存 |
%ymm10 | %xmm10 | 呼叫者儲存 |
%ymm11 | %xmm11 | 呼叫者儲存 |
%ymm12 | %xmm12 | 呼叫者儲存 |
%ymm13 | %xmm13 | 呼叫者儲存 |
%ymm14 | %xmm14 | 呼叫者儲存 |
%ymm15 | %xmm15 | 呼叫者儲存 |
媒體暫存器。這些暫存器用於存放浮點資料。每個YMM暫存器儲存32個位元組。低16位元組可以作為XMM暫存器來訪問
浮點傳送和轉換操作
指令 | 源 | 目的 | 描述 |
---|---|---|---|
vmovss | M32 | X | 傳送單精度數 |
vmovss | X | M32 | 傳送單精度數 |
vmovsd | M64 | X | 傳送雙精度數 |
vmovsd | X | M64 | 傳送雙精度數 |
vmovaps | X | X | 傳送對齊的封裝好的單精度數 |
vmovapd | X | X | 傳送對齊的封裝好的雙精度數 |
浮點傳送指令。這些操作在記憶體和暫存器之間以及一對暫存器之間傳送值(X:XMM暫存器(例如%xmm3);M32:32位記憶體範圍;M64:64位記憶體範圍)
指令 | 源 | 目的 | 描述 |
---|---|---|---|
vcvttss2si | X/M32 | R32 | 用截斷的方法把單精度數轉換成整數 |
vcvttsd2si | X/M64 | R32 | 用截斷的方法把雙精度數轉換成整數 |
vcvttss2siq | X/M32 | R64 | 用截斷的方法把單精度數轉換成四字整數 |
vcvttsd2siq | X/M64 | R64 | 用截斷的方法把雙精度數轉換成四字整數 |
雙運算元浮點轉換指令。這些操作將浮點數轉換成整數(X:XMM暫存器(例如%xmm3); R32:32位通用暫存器(例如%eax);R64:64位通用暫存器(例如%rax);M32:32位記憶體範圍;M64:64位記憶體範圍)
指令 | 源1 | 源2 | 目的 | 描述 |
---|---|---|---|---|
vcvtsi2ss | M32/R32 | X | X | 把整數轉換成單精度數 |
vcvtsi2sd | M32/R32 | X | X | 把整數轉換成雙精度數 |
vcvtsi2ssq | M64/R64 | X | X | 把四字整數轉換成單精度數 |
vcvtsi2sdq | M64/R64 | X | X | 把四字整數轉換成雙精度數 |
三運算元浮點轉換指令。這些操作將第一個源的資料型別轉換成目的資料型別。第二個源值對結果的低位位元組沒有影響(X:XMM暫存器(例如%xmm3);M32:32位記憶體範圍;M64:64位記憶體範圍)
gcc實現單精度與雙精度的轉換需要單獨說明(就不具體解釋了)
Conversion from single to double precision
vunpcklps %xmm0, %xmm0, %xmm0 Replicate first vector element
vcvtps2pd %xmm0, %xmm0 Convert two vector elements to double
Conversion from double to single precision
vmovddup %xmm0, %xmm0 Replicate first vector element
vcvtpd2psx %xmm0, %xmm0 Convert two vector elements to single
運算操作
標量avx2浮點指令。每條指令有一個(S1)或兩個(S1,S2)源運算元,和一個目的運算元。第一個源運算元S1可以是一個XMM暫存器或一個記憶體位置。第二個源運算元和目的運算元都必須是XMM暫存器。每個操作都有一條針對單精度的指令和一條針對雙精度的指令。結果存放在目的暫存器中。
單精度 | 雙精度 | 效果 | 描述 |
---|---|---|---|
vaddss | vaddsd | D<—S2+S1 | 浮點數加 |
vsubss | vsubsd | D<—S2-S1 | 浮點數減 |
vmulss | vmulsd | D<—S2xS1 | 浮點數乘 |
vdivss | vdivsd | D<—S2/S1 | 浮點數除 |
vmaxss | vmaxsd | D<—max(S2,S1) | 浮點數最大值 |
vminss | vminsd | D<—min(S2,S1) | 浮點數最小值 |
sqrtss | sqrtsd | D<— | 浮點數平方根 |
位級操作
單精度 | 雙精度 | 效果 | 描述 |
---|---|---|---|
vxorps | vorpd | D<—S2^S1 | 位級異或(EXCLUSIVE–OR) |
vandps | andpd | D<—S2&S1 | 位級與(AND) |
對封裝資料的位級操作(這些指令對一個XMM暫存器中的所有128位進行布林操作)
比較操作
指令 | 基於 | 描述 |
---|---|---|
ucomiss S1,S2 | S2-S1 | 比較單精度值 |
ucomisd S1,S2 | S2-S1 | 比較雙精度值 |
引數S2必須在XMM暫存器中,而S1可以在XMM暫存器中,也可以在記憶體中
條件碼的設定如下:
順序S2:S1 | CF | ZF | PF(奇偶標誌位) |
---|---|---|---|
無序的(NaN) | 1 | 1 | 1 |
S2 < S1 | 1 | 0 | 0 |
S2 = S1 | 0 | 1 | 0 |
S2 > S1 | 0 | 0 | 0 |
相關推薦
浮點數暫存器與指令
暫存器 AVX浮點體系結構允許資料儲存在16個YMM暫存器中 255 127 0 %ymm0 %xmm0 1st FP arg.返回值 %ymm1 %xmm1 2nd FP引數 %ymm2 %x
8086彙編學習之[BX],CX暫存器與loop指令,ES暫存器等
一、彙編程式的基本格式: 1、基本格式與解析: assume cs:codeseg //assume假設CS暫存器與codeseg段有關聯,codeseg段本就是程式碼段 codeseg segment //段開始,codeseg為段名,可
基於棧與基於暫存器的指令集架構
用C的語法來寫這麼一個語句: C程式碼 a = b + c; 如果把它變成這種形式: add a, b, c 那看起來就更像機器指令了,對吧?這種就是所謂“三地址指令”(3-address instruction),一般形式為: op dest, src1,
浮點數的存儲與表達
key 因此 brush sharp 科學 例如 十進制 類型 ieee754 計算機中的浮點數只是無限接近真實值的近似值。為什麽呢?首先來看一下浮點數在計算機中是如何存儲的。 浮點數的存儲 計算機中浮點數的存儲遵循IEEE754浮點數標準。單精度用32
esp暫存器與ebp暫存器介紹
esp暫存器與ebp暫存器介紹 2013年09月21日 03:04:15 傷心小鴕鳥 閱讀數:974 版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/westboy666/article/details/11858225
8086彙編暫存器及指令彙總
1 暫存器的分類 通用暫存器: ax,bx,cx,dx,(ah,al,bh,bl,ch,cl,dh,dl); sp,bp,si,di 指令暫存器: ip 標誌暫存器: FR 段暫存器: cs,ds,ss,es
【arm】arm32位和arm64位架構、暫存器和指令差異分析總結
Date: 2018.9.21 1、參考 2、前言 最近三個月的時間,都在進行解碼庫的arm架構彙編優化,包括arm32位彙編優化和arm64位彙編優化。在arm32位入門之後,只要掌握了兩種架構的暫存器和指令集差異之後,就可以很快上手編寫arm64
暫存器與儲存器物理區別
從根本上講,暫存器與RAM的物理結構不一樣。 一般暫存器是指由基本的RS觸發器結構衍生出來的D觸發,就是一些與非門構成的結構,這個在數電裡面大家都看過; RAM則有自己的工藝,一般1Bit由六MOS管構成。 所以,這兩者的物理結構不一樣也導致了兩者的效能不同。暫存器訪問
MIPS的暫存器、指令和定址方式的分類
MIPS的32個暫存器 助記符 編號 作用 zero 0 恆為0 at 1 (assembly temporary)保留給彙編器使用 v0,v1 2-3
解釋執行和編譯執行的區別、基於棧和基於暫存器的指令集區別
1. 解釋執行和編譯執行的區別 我們在學習java的時候,對class檔案都有個疑惑,虛擬機器是如何執行發方法中的位元組碼指令的呢?其實 虛擬機器的執行引擎在執行java程式碼的時候有解釋執行和編譯執行兩種選擇。通俗說來,解釋執行是通過直譯器執行,編譯執行即通
IA32暫存器與x86-64暫存器的區別
IA32暫存器 一個IA32CPU包含一組8個儲存32位值的通用暫存器,這些暫存器用來儲存整數資料和指標: 31-0 15-0 15-8 7-0 使用慣例 %eax %ax %ah %al 呼叫者儲存 %ecx %cx %ch %cl 呼叫者
詳細解析ESP暫存器與EBP暫存器
詳細解析ESP暫存器與EBP暫存器 最近在看彙編碼,經常在程式的開頭看到ESP和EBP暫存器的出現,由於本人基礎知識的不牢靠,便上網查閱相關的資料,可惜網上的資料都不給力,都只是流於形式,沒有好好的解釋這兩個東西是什麼.終於通過goo
暫存器與七種定址方式
一、暫存器 總共有14個16位暫存器,8個8位暫存器。 通用暫存器: 資料暫存器: AH(8位) AL(8位) AX(16位) (AX和AL又稱累加器) BH(8位) BL(8位) BX(16位) (BX又稱基址暫存器,唯一作為儲
16位組合語言暫存器及指令整理
第一次寫部落格,有點小緊張~ 暫存器 通用暫存器 8位暫存器 16位暫存器 32位暫存器 暫存器名稱 AH,AL AX EAX 累加暫存器
64位暫存器與彙編
區別有:64位有16個暫存器,32位只有8個。但是32位前8個都有不同的命名,分別是e _ ,而64位前8個使用了r代替e,也就是r _。e開頭的暫存器命名依然可以直接運用於相應暫存器的低32位。而剩下的暫存器名則是從r8 - r15,其低位分別用d,w,b指定長度。32位使用棧幀來作為傳遞的引數的儲存位置
暫存器與快取的區別
這裡的快取是指的CPU的快取。 按與CPU遠近來分,離得最近的是暫存器,然後快取,最後記憶體。 所以,暫存器是最貼近CPU的,而且CPU只與暫存器中進行存取。 (寄存的意思是,暫時存放資料,不中每次從記憶體中取,它就是一個臨時放資料的空間,火車站寄存處就是這個意思)
浮點暫存器及浮點運算
原連結: 浮點執行環境的暫存器主要是8個通用資料暫存器和幾個專用暫存器,它們是狀態暫存器、控制暫存器、標記暫存器等 8個浮點資料暫存器(FPU Data Register),編號FPR0 ~ FPR7。每個浮點暫存器都是80位的,以擴充套件精度格式儲存資料。當其他型別資料
組態王讀取modbusTCP裝置浮點數時的SWAPF暫存器設定
組態王讀取modbus裝置浮點數的時候,需要設定SWAPF暫存器,確定驅動程式怎樣排列浮點數當中的位元組順序。 位元組順序,只有0, 1, 2, 3四種取值。 例如在通訊時從0001地址讀取的四個十六進位制值為 HV1,HV2, HV3, HV4則: 當SWAP = 0時
F28335 ePWM計數模組(CC)與 動作模組(AC)及其暫存器配置 ————TMS320F28335學習筆記(六)
1 計數比較模組 1.1 計數比較模組作用 計數比較模組是以時基計數器的值作為輸入,與比較暫存器CMPA和CMPB不斷進行比較的,當時基計數器的值等於其中之一時,就會產生相應的事件。 F28335就是通過對比這些值,來產生事件,與動作模組AC相配合來調節PWM的佔空比以及頻率。 補充:採
《STM32F7原理與應用暫存器版上下冊》張洋高清PDF學習
暫存器版上下冊PDF全集。本套書籍以ST公司的STM32F767為目標晶片,詳細介紹了STM32F7的特點、片內外資源的使用,並輔以65個例程,由淺入深地介紹了STM32F7的使用。所有例程都經過精心編寫,從原理開始介紹,到程式碼編寫、下載驗證,一步步教讀者如何實現。所有原始碼都配有詳細註釋,且經過嚴格測試。