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

loop_in_codes

低調做技術__歡迎移步我的獨立博客 codemaro.com 微博 kevinlynx

lua_yield為什么就必須在return表達式中被調用

 

很早前在折騰掛起LUA腳本支持時,接觸到lua_yield這個函數。lua manual中給的解釋是:

This function should only be called as the return expression of a C function。

而這個函數一般是在一個注冊到LUA環境中的C函數里被調用。lua_CFunction要求的原型里
,函數的返回值必須返回要返回到LUA腳本中的值的個數。也就是說,在一個不需要掛起的
lua_CFunction實現里,也就是一個不需要return lua_yield(...的實現里,我應該return
一個返回值個數。

但是為什么調用lua_yield就必須放在return表達式里?當時很天真,沒去深究,反正發現
不按照lua manual里說的做就是不行。而且關鍵是,lua manual就不告訴你為什么。

最近突然就想到這個問題,決定去搞清楚這個問題。侯捷說了,源碼面前了無秘密。我甚至
在看代碼之前,還琢磨著LUA是不是操作了堆棧(系統堆棧)之類的東西。結果隨便跟了下
代碼真的讓我很汗顏。有時候人犯傻了真的是一個悲劇。諾簡單的一個問題會被人搞得很神
秘:

解釋執行調用一個注冊進LUA的lua_CFunction是在ldo.c里的luaD_precall函數里,有如下
代碼:

    n = (*curr_func(L)->c.f)(L);  /* do the actual call */
    lua_lock(L);
    if (n < 0)  /* yielding? */
      return PCRYIELD;
    else {
      luaD_poscall(L, L->top - n);
      return PCRC;
    }

多的我就不說了,別人注釋寫得很清楚了,注冊進去的lua_CFunction如果返回值小于0,這
個函數就向上層返回PCRYIELD,從名字就可看出是告訴上層需要YIELD。再找到lua_yield函
數的實現,恰好該函數就返回-1。

要再往上層跟,會到lvm.c里luaV_execute函數,看起來應該就是虛擬機在解釋執行指令:

      case OP_CALL: {
        int b = GETARG_B(i);
        int nresults = GETARG_C(i) - 1;
        if (b != 0) L->top = ra+b;  /* else previous instruction set top */
        L->savedpc = pc;
        switch (luaD_precall(L, ra, nresults)) {
          case PCRLUA: {
            nexeccalls++;
            goto reentry;  /* restart luaV_execute over new Lua function */
          }
          case PCRC: {
            /* it was a C function (`precall' called it); adjust results */
            if (nresults >= 0) L->top = L->ci->top;
            base = L->base;
            continue;

對于PCRYIELD返回值,直接忽略處理了。

posted on 2010-01-17 19:32 Kevin Lynx 閱讀(3871) 評論(0)  編輯 收藏 引用 所屬分類: lua

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产日韩在线一区二区三区| 久久五月婷婷丁香社区| 狼人社综合社区| 日韩网站在线观看| 欧美资源在线| 欧美一区二区视频在线观看| 亚洲一区二区三区色| 一区二区三区欧美成人| 久久亚洲二区| 欧美在线日韩在线| 午夜精品成人在线| 欧美在线视频一区二区三区| 欧美一区二区三区四区夜夜大片 | 亚洲欧洲99久久| 亚洲欧美日韩精品久久奇米色影视| 一区二区精品| 久久综合激情| 国产精品va| 国语自产精品视频在线看一大j8| 欧美日韩另类一区| 久久久久久自在自线| 欧美高清hd18日本| 国产精品久久久久一区| 一区免费视频| 亚洲欧美日韩中文视频| 六十路精品视频| 亚洲视频在线一区| 美女国内精品自产拍在线播放| 欧美母乳在线| 亚洲高清在线精品| 久久久久一区| 欧美一区二区视频在线观看2020 | 免费亚洲电影在线| 欧美日本在线一区| 亚洲第一天堂av| 久久亚洲国产精品一区二区| 久久久亚洲高清| 亚洲免费在线观看视频| 久久综合九色综合欧美就去吻| 欧美日韩中文字幕| 亚洲精品一区在线观看香蕉| 久久久噜噜噜久久中文字幕色伊伊 | 午夜精品一区二区三区电影天堂| 欧美国产先锋| 在线观看av不卡| 免费久久99精品国产| 欧美中文字幕在线播放| 影院欧美亚洲| 亚洲第一在线综合在线| 欧美有码在线观看视频| 国产欧美亚洲日本| 久久精品99| 玖玖综合伊人| 亚洲一区国产视频| 欧美一区二区视频97| 久久久av毛片精品| 国产精自产拍久久久久久蜜| 国产精品99久久久久久白浆小说| 亚洲国产天堂久久综合网| 欧美日韩免费在线观看| 久久国产精品一区二区| 欧美福利网址| 久久狠狠亚洲综合| 一本色道久久综合亚洲精品小说| 亚洲国产成人精品女人久久久| 国产一区二区欧美| 牛牛影视久久网| 亚洲欧美在线观看| 欧美成人精品在线| 久久久久久欧美| 久久久水蜜桃| 国产免费一区二区三区香蕉精| 欧美成人蜜桃| 精品成人国产| 久久国产精品72免费观看| 中文网丁香综合网| 欧美精品亚洲一区二区在线播放| 久久亚洲国产精品日日av夜夜| 国产精品系列在线播放| 一本色道久久综合| 亚洲尤物影院| 国产欧美69| 久久精品一区中文字幕| 久久久在线视频| 亚洲电影免费观看高清完整版| 久久精品国产第一区二区三区| 久久久国产成人精品| 伊人春色精品| 欧美日韩高清在线播放| 亚洲视频一区二区| 久久精品国产亚洲一区二区| 国产一区二区日韩精品欧美精品| 欧美一级大片在线观看| 欧美国产一区在线| 亚洲欧美经典视频| 亚洲三级影片| 午夜精品久久久久久久久久久久 | 午夜欧美大尺度福利影院在线看 | 香蕉久久精品日日躁夜夜躁| 国产农村妇女精品一区二区| 欧美一区二区精品在线| 亚洲国产成人在线| 久久精品91久久久久久再现| 99国产精品自拍| 亚洲国产女人aaa毛片在线| 国产精品视频成人| 欧美视频在线一区| 欧美精品v国产精品v日韩精品| 午夜精品免费在线| 亚洲视频在线一区观看| 99视频精品免费观看| 最近中文字幕日韩精品| 欧美大成色www永久网站婷| 欧美在线日韩精品| 久久se精品一区二区| 亚洲欧美资源在线| 午夜精品区一区二区三| 久久精品免费看| 久久夜色精品亚洲噜噜国产mv| 午夜精品一区二区三区电影天堂 | 一区二区三区视频在线看| 最新国产成人在线观看| 91久久精品一区二区别| 在线亚洲欧美| 久久成人18免费网站| 久久亚洲精品伦理| 欧美国产日韩亚洲一区| 欧美精品免费看| 国产女主播一区| 亚洲精品中文字| 先锋亚洲精品| 亚洲娇小video精品| 亚洲先锋成人| 久久婷婷av| 国产精品伦子伦免费视频| 久久精品在线播放| 国产亚洲亚洲| 亚洲美女中文字幕| 在线综合亚洲| 欧美/亚洲一区| 99在线精品观看| 久久久综合视频| 国产精品看片资源| 日韩天堂在线观看| 你懂的国产精品| 欧美一区二区视频在线| 欧美日韩日日骚| 亚洲人被黑人高潮完整版| 久久国产主播| 欧美在线啊v一区| 国产麻豆精品久久一二三| 国内一区二区三区| 亚洲一区二区三区欧美| 9i看片成人免费高清| 男人的天堂亚洲| 黄色综合网站| 欧美大片国产精品| 久久夜色精品| 亚洲精品一区中文| 亚洲美女91| 国产精品久久久久三级| 先锋资源久久| 欧美在线视频全部完| 狠狠久久五月精品中文字幕| 久久影院午夜论| 蜜臀av一级做a爰片久久| 亚洲电影自拍| 在线亚洲一区二区| 亚洲专区一区| 欧美jizzhd精品欧美巨大免费| 国产欧美精品| 欧美成人精品三级在线观看| 久久久夜色精品亚洲| 麻豆精品视频在线观看| 一本色道久久综合亚洲精品不| 在线视频一区观看| 在线观看国产精品淫| 这里只有视频精品| 亚洲成色777777女色窝| 中国女人久久久| 亚洲另类自拍| 99国产精品| 亚洲精品国久久99热| 欧美一区二区三区精品| 亚洲乱码国产乱码精品精98午夜| 亚洲欧美精品在线| 亚洲欧美日韩一区二区三区在线观看 | 久久婷婷麻豆| 久久大香伊蕉在人线观看热2| 欧美久久视频| 亚洲毛片av| 亚洲线精品一区二区三区八戒| 欧美jizzhd精品欧美巨大免费| 免费成人av在线看| 在线观看欧美激情| 免费成人高清| 亚洲精品影院在线观看| 亚洲天堂网站在线观看视频| 欧美日韩直播| 午夜精彩视频在线观看不卡|