亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        堆棧機(jī)器簡(jiǎn)單編譯器在Isabelle/HOL中的驗(yàn)證

        2019-09-24 01:16:38陳飛揚(yáng)徐文濤孫紹山錢振江
        關(guān)鍵詞:編譯器堆棧算術(shù)

        陳飛揚(yáng),徐文濤,孫紹山,朱 浩,錢振江

        (常熟理工學(xué)院 計(jì)算機(jī)科學(xué)與工程學(xué)院,江蘇 常熟 215500)

        1 引言

        堆棧機(jī)器(stack machine)是計(jì)算機(jī)科學(xué)的一種計(jì)算模型,它利用“后進(jìn)先出”的堆棧來存儲(chǔ)臨時(shí)變量,在執(zhí)行相關(guān)指令時(shí),指令操作數(shù)從堆?!皬棾觥?,然后把計(jì)算結(jié)果“推進(jìn)”堆棧. 因?yàn)榇蟛糠炙阈g(shù)表達(dá)式可以較為容易地轉(zhuǎn)換為后綴表示法,所以用堆棧形式執(zhí)行部分高級(jí)語言的效率很高. 由于堆棧機(jī)器的特點(diǎn),其編譯器(compiler)也相比其他結(jié)構(gòu)機(jī)器的編譯器要簡(jiǎn)單、快速.

        形式化方法(formal methods)是用于計(jì)算機(jī)軟件工程和硬件工程的開發(fā)和驗(yàn)證技術(shù). 基于數(shù)學(xué)分析,它有助于保證設(shè)計(jì)的可靠性和魯棒性. 如今,借助內(nèi)置的決策程序和定理證明器,越來越多的人開始使用交互式定理證明(Interactive Theorem Proving)工具來對(duì)設(shè)計(jì)進(jìn)行形式化驗(yàn)證.

        本文基于Isabelle/HOL對(duì)堆棧機(jī)器的簡(jiǎn)單編譯器進(jìn)行形式化驗(yàn)證,證明對(duì)于由算術(shù)類型表達(dá)式和布爾類型表達(dá)式構(gòu)成的語言,堆棧機(jī)器編譯器的正確性.

        2 相關(guān)研究

        目前在形式化領(lǐng)域,要驗(yàn)證模型的正確性,有不少定理證明器(theorem provers)可供使用,如Isabelle[1]、HOL-light[2]和HOL4[3]等. 較為相關(guān)的是許多操作系統(tǒng)安全驗(yàn)證,如Walker等人對(duì)UCLA Secure Data Unix內(nèi)核的驗(yàn)證[4],Bevier博士對(duì)KIT的形式化驗(yàn)證[5-8],由澳大利亞國家ICT實(shí)驗(yàn)室(NICTA)在2004—2006年實(shí)施發(fā)起的L4.verified項(xiàng)目[9].

        3 編譯表達(dá)式簡(jiǎn)介

        3.1 表達(dá)式簡(jiǎn)介

        為了便于模擬,把表達(dá)式分為兩類:布爾類型表達(dá)式由變?cè)?、常元、布爾類型一元運(yùn)算符、布爾類型二元運(yùn)算符構(gòu)成;算術(shù)表達(dá)式由變?cè)?、常元、算術(shù)類型一元運(yùn)算符、算術(shù)類型二元運(yùn)算符、條件表達(dá)式構(gòu)成.其中,條件表達(dá)式特指根據(jù)布爾表達(dá)式的真假,計(jì)算第一或第二個(gè)算術(shù)表達(dá)式的值.

        3.2 堆棧機(jī)器指令簡(jiǎn)介

        把堆棧機(jī)器的指令分為兩類:布爾表達(dá)式相關(guān)的指令和算術(shù)表達(dá)式相關(guān)的指令.

        布爾表達(dá)式相關(guān)的指令包括:(1)載入布爾類型常量;(2)載入布爾類型地址內(nèi)容;(3)對(duì)一個(gè)棧頂元素應(yīng)用布爾類型一元運(yùn)算并以計(jì)算結(jié)果代替它;(4)對(duì)兩個(gè)棧頂元素應(yīng)用布爾類型二元運(yùn)算并以結(jié)果代替它們.

        算術(shù)表達(dá)式相關(guān)的指令包括:(1)載入算術(shù)類型常量;(2)載入算術(shù)類型地址內(nèi)容;(3)對(duì)一個(gè)棧頂元素應(yīng)用算術(shù)類型一元運(yùn)算并以計(jì)算結(jié)果代替它;(4)對(duì)兩個(gè)棧頂元素應(yīng)用算術(shù)類型二元運(yùn)算并以結(jié)果代替它們;(5)根據(jù)棧頂布爾類型的值來決定選取兩個(gè)算術(shù)表達(dá)式中哪一個(gè)的值,如果為真則取第一個(gè)的值,反之取第二個(gè)的值.

        3.3 編譯器簡(jiǎn)介

        根據(jù)要生成的指令類型,把編譯器分為布爾表達(dá)式編譯器和算術(shù)表達(dá)式編譯器. 對(duì)布爾類型表達(dá)式,用布爾表達(dá)式編譯器把相關(guān)操作編譯為布爾表達(dá)式相關(guān)的指令,并存放于布爾表達(dá)式相關(guān)指令的指令表中. 同理,對(duì)于算術(shù)類型表達(dá)式,用算術(shù)表達(dá)式編譯器把相關(guān)操作編譯為執(zhí)行算術(shù)表達(dá)式相關(guān)的指令,并存放于算術(shù)表達(dá)式相關(guān)指令的指令表中.

        3.4 堆棧機(jī)器運(yùn)行行為簡(jiǎn)介

        堆棧機(jī)器運(yùn)行需要依靠指令表、存儲(chǔ)器、堆棧3個(gè)部分. 處理器執(zhí)行指令表中的指令,存儲(chǔ)器保存表達(dá)式地址,堆棧存儲(chǔ)程序運(yùn)行時(shí)的數(shù)據(jù). 其中,存儲(chǔ)器堆棧用表來模擬,而對(duì)于布爾表達(dá)式相關(guān)的指令和算術(shù)表達(dá)式相關(guān)的指令,分別由兩個(gè)函數(shù)來模擬處理器的行為.

        4 編譯器在Isabelle/HOL中的形式化

        4.1 表達(dá)式形式化

        因?yàn)樗阈g(shù)表達(dá)式的條件表達(dá)式依賴布爾表達(dá)式,所以需要先形式化布爾表達(dá)式,如圖1所示.

        參照布爾表達(dá)式,形式化算術(shù)表達(dá)式,如圖2所示.

        為了得到表達(dá)式計(jì)算的結(jié)果,需要對(duì)兩類表達(dá)式的求值進(jìn)行形式化,如圖3所示.

        4.2 堆棧機(jī)器指令形式化

        同樣,先形式化布爾表達(dá)式相關(guān)的指令,再形式化算術(shù)表達(dá)式相關(guān)的指令,如圖4所示.

        4.3 編譯器形式化

        編譯器的行為可以用函數(shù)來模擬,根據(jù)表達(dá)式的類型,分別用兩個(gè)函數(shù)來模擬編譯布爾表達(dá)式和算術(shù)表達(dá)式的行為,如圖5所示.

        圖1 布爾表達(dá)式形式化

        圖2 算術(shù)表達(dá)式形式化

        圖3 表達(dá)式求值形式化

        4.4 處理器形式化

        為了驗(yàn)證編譯器的正確性,需要模擬處理器來執(zhí)行編譯過的表達(dá)式. 同樣,用兩個(gè)函數(shù)分別模擬處理器執(zhí)行布爾表達(dá)式相關(guān)指令的行為和處理器執(zhí)行算術(shù)表達(dá)式相關(guān)指令的行為,如圖6所示.

        圖4 堆棧機(jī)器指令形式化

        圖5 編譯器形式化

        4.5 編譯器正確性證明

        要證明編譯器的正確性,即證明處理器執(zhí)行編譯器編譯過的表達(dá)式能得到正確的值.

        首先,證明編譯器編譯布爾表達(dá)式的正確性. 為了證明處理器能正確執(zhí)行編譯過的多條表達(dá)式,需要證明布爾表達(dá)式相關(guān)指令是可以合并的(引理1).

        引理1append_bool: "?bs. execute_bool (xs @ ys) s bs = execute_boolys s (execute_boolxs s bs)"

        根據(jù)引理1,可以證明處理器執(zhí)行布爾表達(dá)式相關(guān)指令能得到正確的值(定理1).

        定理1correct_bool: "?bs. execute_bool (compile_bool e) s bs = (value_bool e s) # bs"

        然后,證明編譯算術(shù)表達(dá)式的正確性. 同理,先證明算術(shù)表達(dá)式相關(guān)指令可以合并(引理2).

        引理2append_arith:"? vs. execute_arith (xs @ ys) env s vs = execute_arithysenv s (execute_arithxsenv s vs)"

        根據(jù)引理2和定理1,可以證明處理器執(zhí)行算術(shù)表達(dá)式相關(guān)指令也能得到正確的值(定理2).

        定理2correct_arith: "? vs. execute_arith (compile_arith e) env s vs = (value_arith e env s) # vs"

        綜上,編譯器能正確編譯布爾表達(dá)式和算術(shù)表達(dá)式,完成編譯器正確性證明,引理1、定理1、引理2、定理2的證明過程見圖7.

        最終的證明結(jié)果如圖8所示,“No subgoals!”表示證明完成.

        圖6 處理器形式化

        圖7 引理1、定理1、引理2和定理2的證明腳本

        5 結(jié)語

        本文借助定理證明器Isabelle/HOL,對(duì)布爾表達(dá)式和算術(shù)表達(dá)式、堆棧機(jī)器指令、編譯器、堆棧機(jī)器運(yùn)行行為進(jìn)行形式化,驗(yàn)證了堆棧機(jī)器簡(jiǎn)單編譯器的正確性. 目前對(duì)于編譯器形式化驗(yàn)證的工作較少,本文僅對(duì)堆棧機(jī)器的簡(jiǎn)單編譯器進(jìn)行驗(yàn)證,考慮到實(shí)際應(yīng)用中編譯器的復(fù)雜度,仍有大量的課題有待研究.

        圖8 證明結(jié)果

        猜你喜歡
        編譯器堆棧算術(shù)
        基于相異編譯器的安全計(jì)算機(jī)平臺(tái)交叉編譯環(huán)境設(shè)計(jì)
        嵌入式軟件堆棧溢出的動(dòng)態(tài)檢測(cè)方案設(shè)計(jì)*
        算算術(shù)
        基于堆棧自編碼降維的武器裝備體系效能預(yù)測(cè)
        學(xué)算術(shù)
        小狗算算術(shù)
        做算術(shù)(外一則)
        讀寫算(中)(2015年12期)2015-11-07 07:25:01
        通用NC代碼編譯器的設(shè)計(jì)與實(shí)現(xiàn)
        一種用于分析MCS-51目標(biāo)碼堆棧深度的方法
        編譯器無關(guān)性編碼在微控制器中的優(yōu)勢(shì)
        国产精品亚洲美女av网站| 成 人 免 费 黄 色| 风流老熟女一区二区三区| 女同性黄网aaaaa片| 国产精品高潮av有码久久| 91在线视频视频在线| 久久夜色精品国产噜噜噜亚洲av| 熟女一区二区三区在线观看| 国产啪亚洲国产精品无码| 日日躁夜夜躁狠狠躁超碰97| 亚洲中文字幕无码中文字在线 | 热门精品一区二区三区| 人妻少妇猛烈井进入中文字幕 | 人成午夜免费大片| 日本一道dvd在线中文字幕| 久久精品国产亚洲av日韩精品 | 日本韩国一区二区三区| 男男互吃大丁视频网站| 精品久久一品二品三品| 丁香五月亚洲综合在线| 国产精品久久久久久久久岛| 无码av在线a∨天堂毛片| 亚洲中文字幕第二十三页| 久久精品一区二区三区蜜桃| 色欲欲www成人网站| 99久久er这里只有精品18| 国产成人一区二区三区视频免费蜜 | 国产精品黄在线观看免费软件| 97久久综合区小说区图片专区| 欧美丝袜激情办公室在线观看| 女同另类一区二区三区| 国产白浆一区二区三区性色| 国产揄拍国产精品| 激情 人妻 制服 丝袜| 91精品日本久久久久久牛牛 | 久久国产精品美女厕所尿尿av| 成人艳情一二三区| 无码综合天天久久综合网| 日本韩国三级aⅴ在线观看 | 亚洲精品女人天堂av麻| 国模gogo无码人体啪啪|