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

cyt

froofyJIT,來自 http://fzort.org/bi/sw/froofy/

先說說 GNU Lightning,來自 http://www.gnu.org/software/lightning/lightning.html
一個GNU的項目,目的是可以在C/C++中寫跨CPU的匯編代碼,目前支持CPU有x86, SPARC和PowerPC (但浮點數操作只支持x86系列)。
個人覺得還是挺有意思的一個項目。有時候一些關鍵操作還是需要匯編來處理一下,例如加解密運算、圖像處理等等。以前都是直接嵌套匯編,但這樣一來就會失去C代碼的通用性;又或者通過#define來實現多個CPU下的匯編實現。如果用GNU Lightning,至少代碼統(tǒng)一,管理上好很多。不過換來的代價就是要多學一門“匯編”了。

GNU Lightning寫的代碼也不是很好看,原因是它本身是C代碼,調用的是C函數形式。froofyJIT就是解決這個問題,下面是froofyJIT重寫GNU Lightning中的計算費波納數列的代碼的節(jié)選:

GNU Lightning:

typedef int (*pifi)(int);
pifi      nfibs 
= (pifi) (jit_set_ip(codeBuffer).iptr);
int        in;                /* offset of the argument */
jit_insn  
*ref;            /* to patch the forward reference */
            jit_prolog   (
1);
in =  jit_arg_ui   ();
            jit_getarg_ui(JIT_V0, 
in);              /* V0 = n */
ref = jit_blti_ui  (jit_forward(), JIT_V0, 2);
            jit_subi_ui  (JIT_V1, JIT_V0, 
1);       /* V1 = n-1 */
            jit_subi_ui  (JIT_V2, JIT_V0, 
2);       /* V2 = n-2 */
            jit_prepare_i(
1);
            jit_pusharg_ui(JIT_V1);
            jit_finish(nfibs);
            jit_retval_i (JIT_V1);                   
/* V1 = nfibs(n-1) */
            jit_prepare_i(
1);
            jit_pusharg_ui(JIT_V2);
            jit_finish(nfibs);
            jit_retval_i (JIT_V2);                   
/* V2 = nfibs(n-2) */
            jit_addi_ui(JIT_V1,  JIT_V1,  
1);
            jit_addr_ui(JIT_RET, JIT_V1, JIT_V2);   
/* RET = V1 + V2 + 1 */
            jit_ret();
jit_patch(
ref);                               /* patch jump */
            jit_movi_i(JIT_RET, 
1);                 /* RET = 1 */
            jit_ret();
/* call the generated code, passing 32 as an argument */
jit_flush_code(codeBuffer, jit_get_ip().ptr);

froofyJIT:

typedef int (*pifi)(int);
pifi nfibs;
int in;
{
        
using namespace froofy::jit;
        label
<> basis;

nfibs
/  !org,           codeBuffer;
        prolog,         
10false;
        
!arg<ui>        in;
        getarg
<ui>      v0, in;
        blti
<ui>        basis, v0, 2;
        subi
<ui>        v1, v0, 1;
        subi
<ui>        v2, v0, 2;
        prepare
<i>      1;
        pusharg
<ui>     v1;
        finish,         nfibs;
        retval
<i>       v1;
        prepare
<i>      1;
        pusharg
<ui>     v2;
        finish,         nfibs;
        retval
<i>       v2;
        addi
<ui>        v1, v1, 1;
        addr
<ui>        rr, v1, v2;
        ret,            
10false;
basis
/  movi<i>         rr, 1;
        ret,            
10false;
        
!end,           codeBuffer;
}


明顯帥了很多。(不要問我這些代碼的含義,我自己都還沒有學會GNU Lightning,研究當中)
不過GNU Lightning本身是不是正如他自己所說,能夠達到嵌入式匯編同樣的效率,小弟還沒有具體測試過。另外,如果再加上一層C++,會不會增加消耗,那就只有研究過原代碼才能確定了。這幾天暫時還沒有時間,遲點有結果再來寫。
posted on 2006-01-19 17:45 cyt 閱讀(2375) 評論(1)  編輯 收藏 引用 所屬分類: Work
Comments
  • # re: lib介紹,GNU Lightning內嵌匯編的C++封裝
    bi
    Posted @ 2007-03-14 03:38
    多謝您對froofyJIT表示有興趣!其實froofyJIT主要是用在那些有事先未能預知的運算的情況(如blit、語言JIT等)。還有,如果運用得當的話,C++一層并不會在執(zhí)行時(runtime)增加消耗,只是編譯(compile)的時間比較久而已。

    -- bi  回復  更多評論   
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲欧美韩国| 影音欧美亚洲| 欧美一区在线看| 亚洲欧美日本在线| 亚洲成色www8888| 久热成人在线视频| 欧美国产1区2区| 欧美日韩一区二区三区高清| 欧美人交a欧美精品| 欧美午夜在线| 国产夜色精品一区二区av| 狠狠久久亚洲欧美| 日韩视频一区二区三区| 亚洲欧美日韩系列| 另类欧美日韩国产在线| 亚洲精品人人| 欧美一区2区视频在线观看| 麻豆av福利av久久av| 欧美日韩国产小视频| 国产欧美日韩综合一区在线播放 | 在线不卡中文字幕| 夜夜爽www精品| 久久激情综合网| 亚洲精品久久久蜜桃| 亚洲一区二区高清| 蜜桃av综合| 国产欧美日韩三级| 亚洲作爱视频| 久久综合图片| 亚洲一区精彩视频| 欧美精品一区三区在线观看| 国模套图日韩精品一区二区| 亚洲一区二区三区视频播放| 欧美大片专区| 欧美一级久久久| 国产精品av久久久久久麻豆网| 激情五月***国产精品| 亚洲欧美另类综合偷拍| 亚洲第一免费播放区| 久久av二区| 国产精品羞羞答答| 在线视频欧美精品| 亚洲第一页在线| 久久精品毛片| 国产亚洲网站| 欧美在线啊v一区| 宅男噜噜噜66一区二区 | 欧美另类专区| 亚洲激情综合| 欧美成人精品一区| 久久久久久久久久看片| 国产午夜精品视频免费不卡69堂| 日韩午夜剧场| 亚洲国产精品v| 欧美v国产在线一区二区三区| 国内外成人在线视频| 欧美一区二区三区日韩| 亚洲一区二区四区| 亚洲日本精品国产第一区| 亚洲欧洲久久| 欧美国产日韩xxxxx| 亚洲美女视频网| 亚洲国产精品悠悠久久琪琪| 欧美顶级少妇做爰| 亚洲美女精品久久| 亚洲人成人一区二区三区| 欧美国产日韩一二三区| 99亚洲一区二区| 一本色道久久精品| 国产精品视频免费观看| 久久精品欧美日韩| 久久久久久亚洲精品杨幂换脸| 狠狠做深爱婷婷久久综合一区| 久久久久九九九九| 麻豆成人精品| 亚洲视频1区2区| 亚洲免费婷婷| 在线观看中文字幕亚洲| 亚洲黄一区二区三区| 国产精品啊v在线| 欧美一区久久| 久久视频免费观看| 在线一区二区三区四区| 性欧美超级视频| 亚洲国产导航| 亚洲无玛一区| 亚洲国产精品尤物yw在线观看| 91久久午夜| 国产欧美在线观看一区| 欧美电影免费观看高清| 欧美性开放视频| 可以免费看不卡的av网站| 欧美国产日韩亚洲一区| 欧美中文字幕不卡| 欧美成人网在线| 香蕉亚洲视频| 欧美jizz19hd性欧美| 午夜影院日韩| 欧美大片一区二区三区| 欧美一二三区精品| 欧美高清视频| 久久精品视频免费观看| 欧美理论视频| 欧美成人一区二区三区片免费| 国产精品久久7| 欧美激情综合色| 国产亚洲精品久久飘花| 亚洲精品一二三| 亚洲成人自拍视频| 午夜欧美大片免费观看| 亚洲精选在线| 久久久久高清| 欧美亚洲尤物久久| 欧美体内she精视频在线观看| 久久综合九色99| 国产精品免费一区二区三区在线观看 | 欧美三区免费完整视频在线观看| 久久偷窥视频| 亚洲图片欧美一区| 亚洲欧美日韩精品| 国产精品99久久久久久久女警| 久久精品亚洲精品| 午夜精品在线| 欧美午夜宅男影院| 最新日韩av| 亚洲精品欧洲| 欧美成人精品三级在线观看| 免费观看亚洲视频大全| 国模精品一区二区三区| 欧美一级大片在线观看| 久久国产精品99精品国产| 国产精品入口麻豆原神| 亚洲自拍偷拍麻豆| 久久爱www久久做| 国产视频久久网| 亚欧美中日韩视频| 久久精品久久99精品久久| 国产亚洲精品久久久久婷婷瑜伽| 亚洲综合社区| 久久精品国产欧美亚洲人人爽| 国产精品一级二级三级| 亚洲一区二区精品| 久久国产精品99精品国产| 国产亚洲欧美一区二区| 久久久蜜臀国产一区二区| 欧美freesex交免费视频| 亚洲国内自拍| 欧美日韩亚洲一区二| 在线一区二区三区四区五区| 小辣椒精品导航| 国产有码一区二区| 久久夜精品va视频免费观看| 亚洲国产你懂的| 亚洲先锋成人| 国产精品一页| 久久久久久久尹人综合网亚洲 | 国内成人自拍视频| 久久午夜国产精品| 日韩写真在线| 久久国产一区二区三区| 在线免费精品视频| 欧美日韩国产免费| 亚洲女女做受ⅹxx高潮| 欧美xxx成人| 亚洲一区亚洲| 在线电影一区| 欧美三日本三级三级在线播放| 亚洲一区二区网站| 欧美国产国产综合| 亚洲欧美国产一区二区三区| 国产中文一区二区| 欧美人与性动交a欧美精品| 午夜精品视频网站| 亚洲国产日韩欧美在线99| 性色av一区二区三区在线观看| 在线观看一区二区精品视频| 国产精品国产三级国产| 久久综合中文| 午夜欧美精品久久久久久久| 亚洲精品国产精品国自产观看| 久久国产成人| 亚洲午夜精品一区二区三区他趣| 黄色成人免费观看| 国产精品va在线播放| 免费人成网站在线观看欧美高清| 一区二区三区免费观看| 日韩网站在线看片你懂的| 亚洲欧美在线一区| 亚洲第一页自拍| 久久久久久久久岛国免费| 亚洲乱亚洲高清| 在线播放中文一区| 国产欧美日韩精品专区| 欧美日本三区| 久久亚洲免费| 久久精品国产2020观看福利| 亚洲午夜一区| 日韩亚洲成人av在线| 亚洲第一久久影院| 欧美mv日韩mv国产网站app|