瀏覽單個文章
拿破崙波拿巴
*停權中*
 
拿破崙波拿巴的大頭照
 

加入日期: Dec 2018
文章: 53
引用:
作者asccpu
其實CPU指令研究,我早在10多年就不再熱血了,因此不知AVX是什....
不過現在特地找一下AVX說明,看來I公司有意將8051系列指令運作方式改良用在X86上,X86離精簡指令集又更進一步了。

有關你的問題....難
要互換需對這2種指令清楚,例如 8051轉X86指令,先要明白8051指令運作方式,再由X86中選擇相同或相類似出來再取合用,簡單說就是移植,所以這幾乎要用人工。
當然也可寫成轉換程式,這相當於寫組譯程式一樣的大工程。不過最後轉完還是得用人工一一檢視合不合理。
http://ref.x86asm.net/ 這站不知有沒有你想要的資料,可以看看。

上面我所寫的片段,事實上有BUG存在,因為會破壞第2個參數內容,我想INTEL是不允許的。比較合理的轉換為:
1 把參數2複製到參數1
2 把參數1,行1的補數處理
3 把參數1與參數3做AND運算,結果存回參數1處
如此,參數2沒被破壞


我用的是 Pentium 處理器 暫存器大小只有128-bit
我發現 VEX128-bit 以下指令可以模擬 直接將計算結果寫到 XMM 暫存器

但是 VEX128-bit 以上的指令好像沒辦法把 dest 資料直接寫到實體的 XMM 暫存器

就算把 計算完的結果存到 uint256_t 的 dest 也頂多只能把 dest [127:0] 寫到 XMM
如果計算完的結果在128-bit 內 還可以, 如果大小超過 128-bit 就會出錯

如果要處理 帶 YMM 或 ZMM 指令 好像只能像你上面的方法把 操作代碼拆開


但也要看後面是什麼指令, 不過大部份好像都會出問題

我目前只完成 BMI1/2 指令的模擬, 還想添加 AES FMA ... 等指令 提昇 Pentium C/P 值

現在讓我最頭痛的就是 VEX 版本的 SSE-SSE4.x 的 AVX 指令, 因為數量實在太大 ...
舊 2019-01-31, 10:22 AM #9
回應時引用此文章
拿破崙波拿巴離線中