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

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>
            免费成人你懂的| 日韩视频一区二区| 久久精品三级| 狠狠综合久久| 亚洲国产精品一区二区尤物区 | 日韩视频在线观看国产| 亚洲黄色一区| 欧美亚洲第一页| 久久精品91久久香蕉加勒比| 欧美中文在线字幕| 在线观看欧美黄色| 亚洲经典视频在线观看| 欧美日韩直播| 久久久久久尹人网香蕉| 久久偷看各类wc女厕嘘嘘偷窃| 亚洲黄色一区二区三区| 妖精成人www高清在线观看| 国产精品美女午夜av| 久久久五月天| 欧美日韩国产综合新一区| 欧美一区二区三区视频| 久久婷婷国产综合精品青草 | 国产精品一区毛片| 欧美成人精品一区二区三区| 欧美日韩免费在线| 久久躁狠狠躁夜夜爽| 欧美日韩国产色视频| 久久亚洲精品中文字幕冲田杏梨| 欧美乱人伦中文字幕在线| 欧美影院视频| 欧美日韩国产色综合一二三四| 久久成人久久爱| 欧美三级网址| 蜜臀va亚洲va欧美va天堂| 国产精品久久久久aaaa| 欧美99久久| 亚洲午夜高清视频| 亚洲国产精品电影| 欧美一区二区三区电影在线观看| 亚洲精品影院在线观看| 久久精品水蜜桃av综合天堂| 亚洲视频一区在线| 欧美高清影院| 欧美 日韩 国产一区二区在线视频 | 99视频在线精品国自产拍免费观看| 国产精品一区二区三区久久| 亚洲第一区在线| 国产综合久久久久久| 亚洲无玛一区| 亚洲一区网站| 欧美性猛交一区二区三区精品| 亚洲国产高清aⅴ视频| 伊人久久久大香线蕉综合直播 | 亚洲天天影视| 一区二区三区精品视频在线观看| 农夫在线精品视频免费观看| 免费看亚洲片| 在线免费观看成人网| 久久成人一区| 久久在线免费观看| 国产真实乱偷精品视频免| 亚洲特级片在线| 亚洲欧美激情一区| 国产精品久久久久久久久久免费看| 亚洲日本欧美| 日韩视频中午一区| 欧美精品一区二| 亚洲日产国产精品| 在线视频一区二区| 国产精品成人观看视频国产奇米| 日韩视频在线永久播放| 亚洲一区在线观看视频| 欧美三级精品| 亚洲综合日韩| 久久综合网络一区二区| 136国产福利精品导航网址应用| 久久精品国产视频| 欧美大片免费久久精品三p | 久久久噜噜噜久久狠狠50岁| 狠狠色噜噜狠狠色综合久| 美女在线一区二区| 亚洲人妖在线| 欧美一区激情| 在线观看日韩www视频免费 | 国产女主播一区二区三区| 午夜久久tv| 欧美成人资源| 亚洲欧美bt| 国语自产精品视频在线看一大j8 | 一区二区三欧美| 久久裸体艺术| 一区二区激情视频| 国产欧美日韩91| 亚洲三级电影全部在线观看高清 | 国产一区二区剧情av在线| 久久久另类综合| 亚洲免费电影在线观看| 性久久久久久久久| 亚洲国产精品成人| 国产精品欧美一区喷水| 久久一区精品| 亚洲图片在线观看| 欧美大片18| 欧美在线三区| 一区二区免费在线观看| 国模精品一区二区三区| 欧美日韩免费在线视频| 久久天天躁夜夜躁狠狠躁2022| 一本大道久久a久久综合婷婷| 久久久久久999| 亚洲免费在线看| 亚洲精品日韩久久| 国产专区欧美专区| 国产精品久久二区| 欧美精品尤物在线| 久久久精品一区| 亚洲在线视频观看| 亚洲国产精品久久91精品| 久久久久久一区二区| 午夜视频精品| 亚洲调教视频在线观看| 亚洲欧洲精品一区二区| 狠狠色2019综合网| 国产日韩欧美二区| 国产精品视频yy9099| 欧美日韩在线播放一区二区| 蘑菇福利视频一区播放| 久久久水蜜桃| 久久精品国产免费| 欧美一区二区三区在线视频| 亚洲午夜小视频| 中文日韩在线| 一区二区三区四区蜜桃| 亚洲三级视频| 亚洲精品免费一二三区| 91久久精品一区| 亚洲激情校园春色| 亚洲国产成人porn| 欧美成人精品1314www| 久久综合九色九九| 蜜桃av久久久亚洲精品| 免费亚洲电影在线| 欧美大片18| 最新国产成人av网站网址麻豆| 欧美激情91| 亚洲精品欧美日韩| 一区二区高清| 亚洲一区在线看| 午夜免费日韩视频| 欧美一二三区在线观看| 欧美在线首页| 久久免费高清| 欧美精品色网| 国产精品久久久久aaaa九色| 国产精品亚洲综合一区在线观看| 国产美女一区二区| 激情五月***国产精品| 亚洲国产日韩一区二区| 亚洲精品国产精品国自产在线 | 亚洲精品久久久久久久久久久| 亚洲精品视频二区| 中国av一区| 欧美一区网站| 欧美二区在线观看| 国产精品久久久久久久久久免费 | 狠狠狠色丁香婷婷综合久久五月 | 免费不卡在线观看av| 欧美成人精品激情在线观看| 欧美日韩国产片| 国产嫩草影院久久久久 | 欧美xart系列高清| 欧美日韩亚洲综合一区| 国产日韩一区欧美| 亚洲激情另类| 午夜精品久久久久久久| 久久综合中文色婷婷| 日韩视频免费在线| 久久精品动漫| 欧美亚洲成人免费| 亚洲国产激情| 欧美夜福利tv在线| 亚洲大胆女人| 亚洲欧美国产精品va在线观看| 久久综合九色综合网站| 国产精品国产三级欧美二区| 在线日韩中文| 欧美一区二区三区精品| 亚洲国产精品久久| 欧美一区二区三区在线观看| 欧美日韩国产成人在线观看| 在线成人激情视频| 亚洲欧美日韩在线一区| 亚洲国产aⅴ天堂久久| 性欧美大战久久久久久久免费观看 | 欧美www视频| 精品电影一区| 午夜视频在线观看一区二区三区 | 久久综合五月天婷婷伊人| 亚洲午夜在线| 欧美激情一区在线|