• <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>
            流逝的時(shí)光
            總有一天我們都會(huì)離去 email: zzxhang@gmail.com
            posts - 21,comments - 111,trackbacks - 0

             命名為L(zhǎng)uckyScript,有點(diǎn)古怪的名字,為什么這么叫呢?因?yàn)檫^(guò)去的兩年時(shí)間里我一直都覺(jué)得自己不太順,今年是本人的本命年,圖個(gè)吉利,希望所有事情都會(huì)好起來(lái)..有多少跟我一樣唯心主義的程序員?
            打算讓這門無(wú)類型的語(yǔ)言最低限度地支持面向?qū)ο螅鸫a能構(gòu)造類跟重載函數(shù)吧,其他沒(méi)想好,寫著玩,最近還是挺閑的.這幾天把匯編器跟虛擬機(jī)搞了出來(lái).
            測(cè)試用的匯編腳本,比較長(zhǎng)

              1Func square
              2{
              3    Param a;
              4    
              5    Var c;
              6    
              7    Mov c,1;
              8    Mul c,a;
              9    Mul c,a;
             10
             11    Ret c;
             12}

             13Func addSquare
             14{
             15    Param a;
             16    Param b;
             17
             18    Push a;
             19    Call square;
             20    Mov a,RetVal;
             21    Push b;
             22    Call square;
             23    Mov b,RetVal;
             24
             25    Var c;
             26    Mov c,0;
             27    Add c,a; 
             28    Add c,b;   
             29    
             30    Ret c; 
             31}

             32
             33Func sum
             34{
             35    Param from;
             36    Param to;
             37
             38    Var i;
             39    Var s;
             40
             41    Mov s,0;
             42    Mov i,from;
             43    
             44Lab : next
             45    Add s,i;
             46    Inc i;
             47    Jle i,to,next;
             48
             49    Ret s;
             50}

             51
             52Func Main
             53{
             54    Var a;
             55    Var b;
             56    Var c;
             57
             58    Mov a,2;
             59    Mov b,3;
             60
             61    Push "Runtime info:";
             62    CallHost print;
             63    CallHost newLine;
             64    Push "call addSquare function";
             65    CallHost print;
             66    CallHost newLine;
             67    Push "Param: ";
             68    CallHost print;
             69    Push a;
             70    CallHost print;
             71    Push b;
             72    CallHost print;
             73    CallHost newLine;
             74
             75    Push a;
             76    Push b;
             77    Call addSquare;
             78
             79    Mov c,RetVal;
             80    
             81    Push "addSquare function return: ";
             82    CallHost print;  
             83    Push c;
             84    CallHost print;
             85    CallHost newLine;  
             86    
             87    Push "call sum function";
             88    CallHost print;
             89    CallHost newLine; 
             90    Push "Param: ";
             91    CallHost print;
             92    Push a;
             93    CallHost print;
             94    Push c;
             95    CallHost print;
             96    CallHost newLine; 
             97
             98    Push a;
             99    Push c;
            100    Call sum;
            101
            102    Mov c,RetVal;
            103    
            104    Push "sum function return: ";
            105    CallHost print;    
            106    Push c;
            107    CallHost print;
            108}

            主程序:

             1#include "stdafx.h"
             2#include "luckyscript.h"
             3
             4using namespace LUCKY_SCRIPT;
             5
             6void print(RuntimeState* state)
             7{
             8    int opType = lucky_getValType(state,-1);
             9
            10    if(opType == OP_FLAG_TYPE_INT)
            11    {
            12        int val = lucky_popValueAsInt(state);
            13        printf("%d ",val);
            14    }

            15    else if(opType == OP_FLAG_TYPE_FLOAT)
            16    {
            17        float val = lucky_popValueAsFloat(state);
            18        printf("%f ",val);
            19    }

            20    else if(opType == OP_FLAG_TYPE_STRING)
            21    {
            22        const char* val = lucky_popValueAsString(state);
            23        printf(val);
            24    }

            25}

            26
            27void newLine(RuntimeState* state)
            28{
            29    printf("\n");
            30}

            31
            32int _tmain(int argc, _TCHAR* argv[])
            33{
            34    lucky_initScript();
            35    lucky_compileAsmFile("test.lsm","test","");
            36
            37    RuntimeState* state = lucky_loadlxeFile("test.lxe");
            38    lucky_registerHostFunc(state,print,"print");
            39    lucky_registerHostFunc(state,newLine,"newLine");
            40    lucky_execute(state);
            41
            42    getch();
            43    return 0;
            44}

            運(yùn)行結(jié)果:

            posted on 2009-02-24 17:25 清風(fēng) 閱讀(2492) 評(píng)論(9)  編輯 收藏 引用 所屬分類: LuckyScript

            FeedBack:
            # re: 準(zhǔn)備寫一門腳本語(yǔ)言,初步完成匯編器及虛擬機(jī)部分
            2009-02-24 17:30 | LOGOS

            又要出一個(gè)vczh么
              回復(fù)  更多評(píng)論
              
            # re: 準(zhǔn)備寫一門腳本語(yǔ)言,初步完成匯編器及虛擬機(jī)部分
            2009-02-24 19:13 | flyman
            呵呵,不錯(cuò),等等看。  回復(fù)  更多評(píng)論
              
            # re: 準(zhǔn)備寫一門腳本語(yǔ)言,初步完成匯編器及虛擬機(jī)部分
            2009-02-24 21:12 | yindf
            這個(gè)“匯編”有點(diǎn)好玩,

            RetVal 是怎么定義的呀?

            難道你的虛擬機(jī)里面專門有地方放返回值?

            如果允許擴(kuò)展類型的話,大小怎么定?

            你的虛擬機(jī)支持垃圾回收嗎?

            或者你想實(shí)現(xiàn)成lua這樣子的?  回復(fù)  更多評(píng)論
              
            # re: 準(zhǔn)備寫一門腳本語(yǔ)言,初步完成匯編器及虛擬機(jī)部分
            2009-02-24 23:28 | 陳梓瀚(vczh)
            做腳本無(wú)論如何得有l(wèi)ambda expression才有意思。腳本的話還是做堆棧機(jī)好。

            “Jle i,to,next;”這句話很有性格  回復(fù)  更多評(píng)論
              
            # re: 準(zhǔn)備寫一門腳本語(yǔ)言,初步完成匯編器及虛擬機(jī)部分[未登錄](méi)
            2009-02-25 12:37 | 清風(fēng)
            @yindf
            自己定義"匯編"是挺好玩的

            RetVal作為一個(gè)虛擬寄存器

            可以這么理解

            大小在定義的時(shí)候就確定了

            剛弄出一個(gè)可運(yùn)行的玩意,很多東西都還沒(méi)具體考慮

            @陳梓瀚(vczh)
            是挺有性格的,呵呵
              回復(fù)  更多評(píng)論
              
            # re: 準(zhǔn)備寫一門腳本語(yǔ)言,初步完成匯編器及虛擬機(jī)部分
            2009-02-25 16:55 | 陳梓瀚(vczh)
            @清風(fēng)
            一般來(lái)說(shuō),應(yīng)該先定義高級(jí)語(yǔ)言,然后再考慮指令集的事情。  回復(fù)  更多評(píng)論
              
            # re: 準(zhǔn)備寫一門腳本語(yǔ)言,初步完成匯編器及虛擬機(jī)部分[未登錄](méi)
            2009-02-25 21:18 | 清風(fēng)
            @陳梓瀚(vczh)
            指令集直接抄的XX語(yǔ)言的  回復(fù)  更多評(píng)論
              
            # re: 準(zhǔn)備寫一門腳本語(yǔ)言,初步完成匯編器及虛擬機(jī)部分
            2009-02-26 12:31 | 夢(mèng)在天涯
            哦,強(qiáng)力支持哦!我跟你們學(xué)習(xí)哦!

            中國(guó)缺少這個(gè)啊,最近學(xué)習(xí)perl,還有python,和ruby都比較流行啊!  回復(fù)  更多評(píng)論
              
            # re: 準(zhǔn)備寫一門腳本語(yǔ)言,初步完成匯編器及虛擬機(jī)部分
            2009-02-26 16:49 | poco
            套用范偉的一句話:你覺(jué)得這事有意思嗎?  回復(fù)  更多評(píng)論
              
            色老头网站久久网| 久久久久久曰本AV免费免费| 亚洲国产精品久久久天堂| 久久精品亚洲男人的天堂| 精品国产91久久久久久久| 奇米综合四色77777久久| 久久久久久久波多野结衣高潮| 久久久久国产精品三级网| 国产精品无码久久久久| 日本精品久久久久中文字幕8| 国内精品久久久久影院免费| 国产精品久久一区二区三区| 久久婷婷国产综合精品| 久久精品国产亚洲av日韩| 久久精品国产亚洲AV无码娇色| 色狠狠久久AV五月综合| www性久久久com| 免费观看成人久久网免费观看| 亚洲国产精品久久久久久| 国内精品久久久久影院网站| 久久久久婷婷| 久久综合亚洲色HEZYO社区 | 国产毛片久久久久久国产毛片| 亚洲国产精久久久久久久| 国产精品美女久久久久AV福利| 久久精品一区二区影院| 精品久久久久久无码不卡| 99久久精品国产一区二区| 久久精品国产亚洲AV无码娇色| 久久九九有精品国产23百花影院| 国产精品gz久久久| 欧美精品乱码99久久蜜桃| 99久久777色| 亚洲&#228;v永久无码精品天堂久久| 久久午夜无码鲁丝片秋霞| 国产精品99久久免费观看| 韩国三级中文字幕hd久久精品 | 国产美女久久久| 亚洲国产天堂久久久久久| 久久婷婷国产综合精品| 久久久精品波多野结衣|