青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天衣有縫

冠蓋滿京華,斯人獨憔悴~
posts - 35, comments - 115, trackbacks - 0, articles - 0
   :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

fpu, mmx及sse的一些 介紹(原創)

Posted on 2007-04-18 15:57 天衣有縫 閱讀(4696) 評論(2)  編輯 收藏 引用 所屬分類: program
為什么要需要FPU和MMX/SSE?
提供了SIMD環境(single instruction multi data),即單指令多數據。
內嵌浮點運算單元,64及128位寄存器等。甚至sin/cos等數學函數也囊括其中,
著名的xvid項目就是使用gcc編譯后使用MMX/SSE優化匯編的典型案例。

轉載請注明原創:http://m.shnenglu.com/jinglexy
msn and mail: jinglexy at yahoo dot com dot cn 上海體育館2007.4.18

FPU: 8個80位浮點寄存器(數據),16位狀態寄存器,16位控制寄存器,16為標識寄存器。
     使用FPU指令對這些寄存器進行操作,這些寄存器構成一個循環棧,st7棧底,st0棧頂,
     當一個值被壓入時,被存入st0,原來st0中的值被存入st7
MMX: 將8個FPU寄存器重命名為8個64位MMX寄存器,即mm0到mm7。
     57條MMX指令,加快了整形浮點運算,但是對于復雜浮點運算無幫助

SSE: 8個128位寄存器(從xmm0到xmm7),MXSCR寄存器,EFLAGS寄存器,專有指令(復雜浮點運算)
SSE2: 寄存器和SSE相同,增加了5種數據類型(都是128位),專有指令
SSE3: 僅增加了幾個新的指令

由于MMX使用的寄存器影射到FPU寄存器上,所以MMX指令執行前,需要保存FPU堆棧。

示例1,FPU寄存器及指令使用(下面所有程序都使用at&t風格匯編):
data1:
        .byte 0x34, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
data2:
        .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.section .text
.globl _start
_start:
        nop
        fbld  data1     壓入st0
        fimul data2     st0中的值和data2相乘,保存在st0中
        fbstp data1     st0彈出到內存44


示例2, SSE寄存器及指令使用
.lcomm data 16
value1:
        .float 12.34, 2345.543, -3493.2, 0.44901
value2:
        .float -54439.234, 23231.4, 1.0098, 0.000003
.section .text
.globl _start
_start:
        movups value1, %xmm0
        movups value2, %xmm1
        movups %xmm0, %xmm2
        movups %xmm0, data


Feedback

# re: fpu, mmx及sse的一些 介紹(原創)  回復  更多評論   

2008-02-19 14:47 by 海楓
你好,我最近也在看FPU的資料(Intel CPU的官方文檔)

想向你請教一下:
FPU,SEE和MMX是不是有重疊的部分呢?

在Intel CPU下的GCC對于浮點計算部分代碼是不是轉換上只用FPU的指令呢?
下面是我在Linux下跑的一個例子,前一部分代碼是C源代碼,后一部分代碼是GCC處理后的相應匯編代碼,我發現里面只有涉及FPU的東西,而沒有MMX和SEE。

ylin@ylin:~/program/c$ cat double.c

double sum(double s1, double s2)
{
int i = 1;
double c = 3.0;
c += s1;
c += s2;
c += i;

return c;
}


void test()
{
sum(1.0, 2.0);
}
ylin@ylin:~/program/c$ cat double.s
.file "double.c"
.section .rodata
.align 8
.LC0:
.long 0
.long 1074266112
.text
.globl sum
.type sum, @function
sum:
pushl %ebp
movl %esp, %ebp
subl $32, %esp
movl 8(%ebp), %eax
movl %eax, -24(%ebp)
movl 12(%ebp), %eax
movl %eax, -20(%ebp)
movl 16(%ebp), %eax
movl %eax, -32(%ebp)
movl 20(%ebp), %eax
movl %eax, -28(%ebp)
movl $1, -4(%ebp)
fldl .LC0
fstpl -16(%ebp)
fldl -16(%ebp)
faddl -24(%ebp)
fstpl -16(%ebp)
fldl -16(%ebp)
faddl -32(%ebp)
fstpl -16(%ebp)
fildl -4(%ebp)
fldl -16(%ebp)
faddp %st, %st(1)
fstpl -16(%ebp)
fldl -16(%ebp)
leave
ret
.size sum, .-sum
.section .rodata
.align 8
.LC2:
.long 0
.long 1073741824
.text
.globl test
.type test, @function
test:
pushl %ebp
movl %esp, %ebp
subl $16, %esp
fldl .LC2
fstpl 8(%esp)
fld1
fstpl (%esp)
call sum
fstp %st(0)
leave
ret
.size test, .-test
.ident "GCC: (GNU) 4.1.2 (Ubuntu 4.1.2-0ubuntu4)"
.section .note.GNU-stack,"",@progbits

# re: fpu, mmx及sse的一些 介紹(原創)[未登錄]  回復  更多評論   

2008-03-19 10:44 by 補考少年
[b]原始短消息:[/b] [url=http://bbs.chinaunix.net/pm.php?action=view&folder=inbox&pmid=757158]你好![/url]
[quote]我在你的博客中有留言!!
想問你個問題!
期待你的回復!![/quote]


很抱歉,才看到你的短信
FPU,SEE和MMX是不是有重疊的部分呢?
你是說寄存器重疊嗎?fpu和mmx使用相同的寄存器,名字不同,使用任意一個之前最好保存相關上下文寄存器。
sse和sse2只有比較新的cpu(pII以上)才支持,為了保證兼容性,默認編譯器不會使用它。
gcc幫助中有:
i386 and x86-64 Options -mtune=cpu-type -march=cpu-type -mfp-
math=unit -masm=dialect -mno-fancy-math-387 -mno-fp-ret-in-387
-msoft-float -msvr3-shlib -mno-wide-multiply -mrtd -malign-dou-
ble -mpreferred-stack-boundary=num -mmmx -msse -msse2 -msse3
-m3dnow -mthreads -mno-align-stringops -minline-all-stringops
-mpush-args -maccumulate-outgoing-args -m128bit-long-double
-m96bit-long-double -mregparm=num -momit-leaf-frame-pointer
-mno-red-zone -mno-tls-direct-seg-refs -mcmodel=code-model -m32
-m64
就像沒有fpu的時候使用libc中軟浮點一樣,默認gcc對一些復雜算法使用fpu指令和軟件算法來解決
可以比較一下:
gcc -c double.c -o double -msse2
objdump -d double
gcc -c double.c -o double -m3dnow
objdump -d double
對優化的一些猜測:針對各個平臺編譯一套dll或.so(不同的編譯優化選項),然后啟動時判斷平臺,加載不同的dll

具體的我也沒深入研究過,都是一知半解,希望對你有幫助
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久久国产精品午夜一区| 欧美午夜精品理论片a级按摩| 亚洲美女中文字幕| 久久综合一区二区| 欧美黄色免费网站| 欧美大片在线观看一区| 欧美jizz19性欧美| 欧美成人激情视频免费观看| 欧美精品尤物在线| 美女网站在线免费欧美精品| 欧美不卡高清| 国产精品高潮呻吟久久av无限| 中文精品99久久国产香蕉| 一本大道久久a久久综合婷婷| 亚洲一区三区电影在线观看| 亚洲影院色无极综合| 亚洲欧美综合一区| 美腿丝袜亚洲色图| 亚洲另类春色国产| 性色一区二区| 欧美高清在线播放| 国产精品一区视频| 亚洲国产精品悠悠久久琪琪| 一区二区欧美日韩视频| 久久精品欧美| 亚洲人成久久| 99精品欧美一区二区三区综合在线 | 国产性猛交xxxx免费看久久| 影音先锋久久| 洋洋av久久久久久久一区| 午夜视频在线观看一区二区| 欧美成人综合一区| 宅男66日本亚洲欧美视频| 久久久另类综合| 欧美视频中文字幕在线| 在线观看91久久久久久| 亚洲一区免费网站| 亚洲夫妻自拍| 久久久久久网| 国产日本欧美一区二区| 一区二区三欧美| 你懂的视频一区二区| 亚洲自拍三区| 国产精品jvid在线观看蜜臀 | 国产精品啊v在线| 黄色欧美成人| 午夜欧美大尺度福利影院在线看| 在线观看欧美亚洲| 一区二区高清视频| 亚洲国产精品一区二区久| 欧美在线视频日韩| 国产噜噜噜噜噜久久久久久久久| 国产精品电影网站| 在线播放一区| 久久亚裔精品欧美| 性刺激综合网| 久久综合中文字幕| 国产乱码精品| 亚洲欧美韩国| 中日韩午夜理伦电影免费| 欧美国产乱视频| 亚洲国产另类久久精品| 另类春色校园亚洲| 久久久久久久久久久久久9999 | 9久草视频在线视频精品| 另类成人小视频在线| 一区二区三区在线观看视频| 亚洲欧美不卡| 亚洲综合社区| 国产亚洲欧洲997久久综合| 亚洲欧美一级二级三级| 亚洲特级毛片| 国产亚洲成精品久久| 小嫩嫩精品导航| 销魂美女一区二区三区视频在线| 羞羞答答国产精品www一本| 欧美日韩你懂的| 亚洲视频网站在线观看| 在线亚洲高清视频| 国产欧美日韩一级| 另类天堂av| 欧美精品在线免费| 亚洲制服av| 欧美在线综合| 亚洲精品一区二区三区福利| 日韩网站在线观看| 国产目拍亚洲精品99久久精品| 伊人激情综合| 亚洲国产精品一区二区第一页| av不卡在线| 国产欧美日韩| 麻豆精品国产91久久久久久| 欧美国产日韩视频| 亚洲在线成人| 久久精品夜色噜噜亚洲a∨| 亚洲高清在线播放| 日韩一二三在线视频播| 国产亚洲成av人片在线观看桃 | 日韩视频在线免费| 欧美激情性爽国产精品17p| 欧美三级乱码| 久久亚洲私人国产精品va| 欧美日本亚洲| 久久久噜噜噜久久中文字免| 免费看亚洲片| 午夜在线精品偷拍| 免费观看不卡av| 性伦欧美刺激片在线观看| 久久久久九九九九| 性色av一区二区三区在线观看| 91久久久久久久久| 欧美日韩午夜在线| 欧美成人免费小视频| 开元免费观看欧美电视剧网站| 麻豆精品一区二区综合av| 伊人久久大香线| 夜夜嗨av一区二区三区四季av| 性欧美1819性猛交| 亚洲人成亚洲人成在线观看图片 | 久久国产黑丝| 亚洲精品在线观| 欧美一级一区| 亚洲一区二区三区午夜| 麻豆精品精品国产自在97香蕉| 在线观看视频一区| 亚洲午夜国产成人av电影男同| 欧美日韩国产成人在线91| 欧美专区第一页| 欧美日韩精品免费| 亚洲欧洲日韩综合二区| 亚洲电影免费在线观看| 欧美一二三区精品| 欧美专区18| 国产日韩精品久久| 亚洲综合日韩在线| 午夜在线a亚洲v天堂网2018| 欧美日韩国产在线观看| 亚洲春色另类小说| 亚洲电影自拍| 久久精品二区亚洲w码| 久久裸体艺术| 国内精品视频久久| 久久久国产成人精品| 久久久午夜电影| 黄色国产精品| 久热精品视频在线观看| 欧美 亚欧 日韩视频在线| 韩国一区二区三区美女美女秀| 久久久久**毛片大全| 国产精品自在在线| 午夜一区不卡| 久久蜜臀精品av| 一区在线视频观看| 久久综合一区二区| 亚洲欧洲另类| 午夜在线a亚洲v天堂网2018| 欧美日韩综合精品| 99国产精品久久久久久久| 亚洲在线一区二区| 国产自产v一区二区三区c| 久久视频国产精品免费视频在线| 亚洲理论在线| 欧美日韩精品免费观看| 亚洲视频在线免费观看| 欧美一区二区视频免费观看| 国产一区二区中文| 久久在精品线影院精品国产| 亚洲电影在线看| 亚洲香蕉网站| 国产美女诱惑一区二区| 另类尿喷潮videofree| 99精品国产在热久久下载| 欧美在线观看视频一区二区三区| 久久精品免视看| 一区二区av在线| 国产日韩av一区二区| 欧美激情性爽国产精品17p| 午夜免费久久久久| 欧美成人激情视频| 欧美成人午夜剧场免费观看| 美日韩丰满少妇在线观看| 日韩午夜黄色| 国产一区二区三区四区在线观看 | 久久久91精品国产一区二区三区 | 久久久蜜臀国产一区二区| 欧美国产精品v| 欧美一区二区三区的| 亚洲精品美女91| 国内成+人亚洲| 国产精品初高中精品久久| 久热这里只精品99re8久| 99www免费人成精品| 欧美成年人在线观看| 性欧美8khd高清极品| 亚洲欧洲另类| 精品二区视频| 国产欧美高清| 国产精品羞羞答答xxdd| 欧美精品自拍| 男人插女人欧美|