亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? zasm.cpp

?? 自己開發的匯編式腳本語言編譯器
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
    */

    int IsStringWhitespace( char *pstrString )
    {
        if( !pstrString )
            return  false;

        if( strlen(pstrString) == 0 )
            return  false;

        unsigned int iCurrCharIndex;

        for( iCurrCharIndex = 0;
             iCurrCharIndex < strlen(pstrString);
             ++ iCurrCharIndex )
        {
            if( !IsCharWhitespace( pstrString[iCurrCharIndex] ) )
            {
                return  false;
            }
        }

        return  true;
    }

    /*****************************************************************************************
    *
    *   IsStringIdent
    *
    *   判斷一個字符串是否是標識符
    */

    int IsStringIdent( char *pstrString )
    {
        if( !pstrString )
            return  false;

        if( strlen(pstrString) == 0 )
            return  false;

        // ---- 判斷第一個字符是不是數字 -----------------------------------------------------

        if( pstrString[0] >= '0' && pstrString[0] <= '9' )
        {
            return  false;
        }

        // ---- 判斷其余字符是否都是有效標識符的部分 -----------------------------------------

        unsigned int iCurrCharIndex;
        for( iCurrCharIndex = 0;
             iCurrCharIndex < strlen( pstrString );
             ++ iCurrCharIndex )
        {
            if( !IsCharIdent( pstrString[iCurrCharIndex] ) )
            {
                return  false;
            }
        }

        return  true;
    }

    /*****************************************************************************************
    *
    *   StripComments()
    *
    *   去除注釋
    */

    void StripComments( char *pstrSourceLine )
    {
        bool    bInString   = false;

        for( unsigned int i=0 ; i < strlen(pstrSourceLine) ; ++i )
        {
            if( pstrSourceLine[i] == '"' )
            {
                if( bInString == true )
                {
                    bInString = false;
                }
                else
                {
                    bInString = true;
                }
            }

            if( pstrSourceLine[i] == ';' )
            {
                if( bInString == false )
                {
                    pstrSourceLine[i]   = '\n';
                    pstrSourceLine[i+1] = '\0';
                    break;
                }
            }
        }
    }

    /*****************************************************************************************
    *
    *   TrimWhiteSpace()
    *
    *   去除左右空格
    */

    void TrimWhitespace( char *pstrSourceLine )
    {
        int     iStringTotalLength;     // 輸入的字符串總長
        int     iStringLength;          // 去除空格后的字符串長度
        int     iLeftPose   = 0;        // 左邊第一個非空格字符的位置
        int     iRightPose  = 0;        // 右邊第一個非空格字符的位置

        // 計算字符串總長度

        iStringTotalLength  = static_cast<int>( strlen(pstrSourceLine) );

        // 計算左邊第一個非空格字符的位置

        for( int i=0 ; i<iStringTotalLength ; ++i )
        {
            if( !IsCharWhitespace(pstrSourceLine[i]) )
            {
                iLeftPose   = i;
                break;
            }
        }

        // 計算右邊第一個非空格字符的位置, 過濾換行符

        for( int i=iStringTotalLength-1 ; i>=0 ; --i )
        {
            if( !IsCharWhitespace(pstrSourceLine[i]) )
            {
                iRightPose  = i;
                break;
            }
        }

        // 計算去除空格后的字符串長度

        iStringLength   = iRightPose - iLeftPose + 1;

        // 將字符串左移到開頭

        if( iLeftPose != 0 )
        {
            for( int i=0 ; i<iStringLength ; ++ i )
            {
                pstrSourceLine[i]   = pstrSourceLine[i+iLeftPose];
            }
        }
        pstrSourceLine[iStringLength]   = '\0';
    }

    /*****************************************************************************************
    *
    *   AddString()
    *
    *   向指定的表添加字符串
    */
     
    int AddString( LinkedList *pList, char *pstrString )
    {
        // 創建節點指針用于遍歷

        LinkedListNode  *pNode  = pList->pHead;

        // 對表中的每一個節點循環操作

        for( int iCurrNode = 0 ; iCurrNode<pList->iNodeCount ; ++ iCurrNode )
        {
            if( strcmp( pstrString, (char*)pNode->pData ) == 0 )
            {
                return      iCurrNode;
            }
            else
            {
                pNode   = pNode->pNext;       
            }
        }

        // 字符串還沒有添加,則添加新的字符串 

        char    *pstrStringNode = new char[strlen(pstrString)+1];
        strcpy( pstrStringNode, pstrString );

        return  AddNode( pList, pstrStringNode );
    }

    /*****************************************************************************************
    *
    *   AddFunc()
    *
    *   向函數表添加函數
    */

    int     AddFunc( char *pstrName, int iEntryPoint )
    {
        // 如果指定函數名已經存在,則返回一個無效索引
        
        if( GetFuncByName( pstrName ) != 0 )
            return  -1;

        // 創建一個函數節點
        
        FuncNode    *pNewFunc   = new FuncNode;
        pNewFunc->iEntryPoint   = iEntryPoint;
        strcpy( pNewFunc->pstrName, pstrName );
        
        // 把函數節點添加到表中并取回索引
        
        pNewFunc->iIndex    = AddNode( &g_FuncTable, pNewFunc );

        // 返回新函數的索引
        
        return  pNewFunc->iIndex;
    }

    /*****************************************************************************************
    *
    *   SetFuncInfo()
    *
    *   設置函數表節點參數數量、局部數據大小
    */

    void SetFuncInfo( char *pstrName, int iParamCount, int iLocalDataSize )
    {
        // 在函數表中查找指定函數
        
        FuncNode    *pFunc  = GetFuncByName( pstrName );
        
        // 設定其余信息
        
        pFunc->iParamCount  = iParamCount;
        pFunc->iLocalDataSize   = iLocalDataSize;
    }

    /*****************************************************************************************
    *
    *   GetFuncByName()
    *
    *   根據函數名取得函數節點
    */

    FuncNode* GetFuncByName( char *pstrName )
    {
        // 如果表是空的,則返回一個空指針
        
        if( g_FuncTable.iNodeCount == 0 )
            return  0;

        // 創建一個指針用于鏈表的遍歷
        
        LinkedListNode  *pCurrNode  = g_FuncTable.pHead;

        // 遍歷鏈表直至找到匹配的結構
        
        for( int iCurrNode = 0 ; iCurrNode < g_FuncTable.iNodeCount ; ++ iCurrNode )
        {
            // 將當前節點數據轉換為函數表指針
        
            FuncNode    *pCurrFunc  = (FuncNode*)pCurrNode->pData;

            // 檢測是否匹配

            if( strcmp( pCurrFunc->pstrName, pstrName ) == 0 )
            {
                return  pCurrFunc;
            }
            else
            {
                pCurrNode   = pCurrNode->pNext;
            }
        }

        // 沒有找到匹配的結構,返回0

        return  0;
    }

    /*****************************************************************************************
    *
    *   AddSymbol()
    *
    *   向符號表添加符號
    */

    int AddSymbol( char *pstrIdent, int iSize, int iStackIndex, int iFuncIndex )
    {
        // 如果標簽已經存在,返回無效索引

        if( GetSymbolByIdent( pstrIdent, iFuncIndex ) )
            return  -1;

        // 創建新的符號節點

        SymbolNode  *pNewSymbol = new SymbolNode;

        // 為新節點賦值

        strcpy( pNewSymbol->pstrIdent, pstrIdent );
        pNewSymbol->iSize       = iSize;
        pNewSymbol->iStackIndex = iStackIndex;
        pNewSymbol->iFuncIndex  = iFuncIndex;

        // 想符號表中添加符號,并取得索引

        pNewSymbol->iIndex  = AddNode( &g_SymbolTable, pNewSymbol );

        // 返回新符號的索引

        return  pNewSymbol->iIndex;
    }

    /*****************************************************************************************
    *
    *   GetSymbolByIdent()
    *
    *   根據標識符取得符號節點指針
    */

    SymbolNode* GetSymbolByIdent( char *pstrIdent, int iFuncIndex )
    {
        // 聲明鏈表節點指針用于符號表的遍歷

        LinkedListNode  *pCurrNode  = g_SymbolTable.pHead;

        // 遍歷符號表
        for( int iCurrNode=0 ; iCurrNode<g_SymbolTable.iNodeCount ; ++ iCurrNode )
        {
            // 將當前節點數據轉換成符號表節點數據

            SymbolNode  *pCurrSymbol    = (SymbolNode*)pCurrNode->pData;

            // 檢測當前符號節點是否和指定符號匹配

            if( strcmp( pCurrSymbol->pstrIdent, pstrIdent ) == 0 )
            {
                // 當前節點標識符匹配時檢測作用域是否相同或重疊(全局/局部)

                if( pCurrSymbol->iFuncIndex == iFuncIndex || pCurrSymbol->iStackIndex >= 0 )
                {
                    return  pCurrSymbol;
                }
            }
            else
            {
                pCurrNode   = pCurrNode->pNext;
            }
        }

        // 沒找到指定節點,返回0

        return  0;
    }

    /*****************************************************************************************
    *
    *   GetStackIndexByIdent()
    *
    *   根據標識符取得其堆棧索引
    */

    int GetStackIndexByIdent( char *pstrIdent, int iFuncIndex )
    {
        // 取得符號

        SymbolNode  *pSymbol    = GetSymbolByIdent( pstrIdent, iFuncIndex );

        // 返回堆棧索引

        return  pSymbol->iStackIndex;
    }

    /*****************************************************************************************
    *
    *   GetSizeByIdent()
    *
    *   根據標識符取得符號大小
    */

    int GetSizeByIdent( char *pstrIdent, int iFuncIndex )
    {
        // 取得符號

        SymbolNode  *pSymbol    = GetSymbolByIdent( pstrIdent, iFuncIndex );

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丁香激情综合五月| 国产精品欧美一区喷水| av在线这里只有精品| 狠狠色伊人亚洲综合成人| 亚洲国产精品精华液网站| 中文字幕佐山爱一区二区免费| 久久精品免视看| 久久精品视频一区二区| 久久综合国产精品| www精品美女久久久tv| 26uuu国产电影一区二区| 久久久.com| 中文字幕乱码亚洲精品一区| 国产欧美精品区一区二区三区| 国产日韩精品一区二区浪潮av| 欧美激情一区二区三区| 国产精品久久久久影视| 亚洲欧洲av色图| 亚洲制服丝袜在线| 视频一区视频二区在线观看| 三级在线观看一区二区 | 日韩欧美专区在线| 欧美一区二区三区四区久久| 日韩一区二区不卡| 国产日本亚洲高清| 一区二区三区国产| 日本欧洲一区二区| 丁香五精品蜜臀久久久久99网站 | 床上的激情91.| av在线一区二区三区| 91九色最新地址| 日韩视频一区二区在线观看| 中文字幕在线视频一区| 欧美日韩国产影片| 日韩欧美第一区| 26uuu国产日韩综合| 亚洲欧洲三级电影| 日欧美一区二区| 国产v日产∨综合v精品视频| 色综合久久天天| 精品国产一区二区精华| 中文字幕在线不卡视频| 午夜av区久久| 成人av午夜电影| 欧美一三区三区四区免费在线看 | 久久精品国产亚洲aⅴ| 成人免费看视频| 69堂成人精品免费视频| 国产精品传媒视频| 喷水一区二区三区| 91女人视频在线观看| 日韩亚洲欧美高清| 亚洲女厕所小便bbb| 极品美女销魂一区二区三区免费| 不卡在线视频中文字幕| 日韩一级完整毛片| 亚洲小少妇裸体bbw| 成人一区二区三区视频在线观看| 欧美日韩久久久一区| 欧美国产视频在线| 精品写真视频在线观看| 欧美日韩综合不卡| 亚洲丝袜美腿综合| 国产成人在线视频免费播放| 91精品国产免费| 亚洲成av人片| 91丨九色丨尤物| 国产精品入口麻豆原神| 激情综合网激情| 欧美顶级少妇做爰| 亚洲国产一二三| 91小宝寻花一区二区三区| 亚洲国产精品二十页| 久久电影网站中文字幕| 欧美精品丝袜久久久中文字幕| 亚洲人成亚洲人成在线观看图片| 高清国产一区二区三区| 26uuu国产在线精品一区二区| 日韩激情一二三区| 欧美中文字幕一区二区三区亚洲| 中文字幕视频一区二区三区久| 国产一区二区免费视频| 日韩美女视频一区二区在线观看| 午夜精品久久一牛影视| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 国产人成一区二区三区影院| 免费日本视频一区| 欧美一区二区精品在线| 亚洲h动漫在线| 欧美精品久久久久久久久老牛影院| 亚洲精品国产高清久久伦理二区| 不卡区在线中文字幕| ●精品国产综合乱码久久久久| 大胆欧美人体老妇| 亚洲欧洲精品一区二区三区| av一二三不卡影片| 亚洲精品ww久久久久久p站| 色综合色狠狠天天综合色| 亚洲欧美日韩国产中文在线| 91激情五月电影| 午夜影视日本亚洲欧洲精品| 91精品午夜视频| 国产乱码精品一品二品| 国产亚洲综合av| 美腿丝袜亚洲三区| 欧美伦理电影网| 久久久久国产精品人| 蜜臀a∨国产成人精品| 欧美中文字幕一区二区三区亚洲| 中文av一区特黄| 成人av小说网| 中文字幕亚洲一区二区va在线| 懂色av中文一区二区三区| 国产精品私人影院| 色又黄又爽网站www久久| 欧美日韩和欧美的一区二区| 中文字幕一区在线观看| 91蜜桃网址入口| 亚洲v精品v日韩v欧美v专区| 精品少妇一区二区三区日产乱码| 亚洲h动漫在线| 国产一区二区不卡| 综合av第一页| 日韩久久久久久| 91麻豆成人久久精品二区三区| 丝袜美腿亚洲一区| 亚洲日本一区二区三区| 精品国产免费一区二区三区四区 | 亚洲超碰97人人做人人爱| 精品久久久久久无| 色狠狠综合天天综合综合| 精品一区二区三区的国产在线播放| 中文字幕一区二区三区四区| 欧美一级片免费看| 在线中文字幕不卡| 成人性生交大合| 青青草97国产精品免费观看 | 亚洲成a人v欧美综合天堂下载 | 日韩美女啊v在线免费观看| 欧美日韩免费观看一区三区| 国产精品性做久久久久久| 午夜激情一区二区| 国产精品看片你懂得| 欧美成人vps| 欧美精品色综合| 色综合天天综合网天天看片| 国产在线播精品第三| 天堂久久一区二区三区| 亚洲一区二区欧美日韩| 国产精品嫩草99a| 久久精品亚洲一区二区三区浴池 | 成人av网站大全| 韩国女主播一区二区三区| 日韩国产欧美在线视频| 午夜在线成人av| 亚洲成人一区在线| 亚洲va国产va欧美va观看| 亚洲精品久久7777| 中文字幕av一区二区三区| 欧美蜜桃一区二区三区| 91免费版在线看| 日韩精品中文字幕一区二区三区| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美精品aⅴ在线视频| 欧美日韩国产首页在线观看| 91国偷自产一区二区开放时间| 97久久超碰国产精品| 99精品久久99久久久久| 91在线视频播放| 色国产综合视频| 欧美日韩一区国产| 制服丝袜激情欧洲亚洲| 欧美哺乳videos| 久久女同精品一区二区| 欧美国产激情二区三区| 亚洲视频一区在线| 欧美性感一区二区三区| 国内精品伊人久久久久av影院| 美女视频网站黄色亚洲| 精彩视频一区二区| 国产精一区二区三区| 国产.欧美.日韩| 色久综合一二码| 日韩亚洲欧美一区| 国产精品国产三级国产aⅴ无密码| 国产精品色噜噜| 丝袜诱惑亚洲看片 | 日韩视频123| 久久精品欧美日韩精品| 亚洲精品免费在线播放| 视频一区二区三区在线| 国产xxx精品视频大全| 在线免费一区三区| 欧美va亚洲va在线观看蝴蝶网| 欧美激情一区三区| 亚洲高清免费在线| 国产成人av自拍| 精品污污网站免费看| 精品91自产拍在线观看一区| 国产精品嫩草影院com|