購(gòu)買設(shè)計(jì)請(qǐng)充值后下載,,資源目錄下的文件所見即所得,都可以點(diǎn)開預(yù)覽,,資料完整,充值下載可得到資源目錄里的所有文件。。?!咀ⅰ浚篸wg后綴為CAD圖紙,doc,docx為WORD文檔,原稿無水印,可編輯。。。具體請(qǐng)見文件預(yù)覽,有不明白之處,可咨詢QQ:12401814
附錄:外文翻譯
摘要機(jī)器語言編程實(shí)現(xiàn)
Stephan Diehla,?, Pieter Hartelb, Peter Sestoftc
aFB-14 Informatik, Universit?t des Saarlandes, Postfach 15 11 50, 66041 Saarbrücken, Germany
bDepartment of Electronics and Computer Science, University of Southampton, Highfield, Southampton SO17 1BJ, UK
cDepartment of Mathematics and Physics, Royal Veterinary and Agricultural University, Thorvaldsensvej 40,
DK-1871 Frederiksberg C, Denmark
Accepted 24 June 1999
摘要:
我們提出了廣泛的注釋書目,抽象機(jī)設(shè)計(jì)的每一個(gè)編程的主要范式(勢(shì)在必行,面向?qū)ο?,功能,邏輯和并行)。我們得出這樣的結(jié)論:雖然大量高效摘要機(jī)器被設(shè)計(jì)為特定語言的實(shí)現(xiàn),相對(duì)較小的工作已經(jīng)完成設(shè)計(jì)摘要機(jī)以系統(tǒng)的方式。
1.什么是一個(gè)抽象的機(jī)器嗎?
摘要機(jī)機(jī)因?yàn)樗麄兠俊槭±砉W(xué)院一步一步的程序的執(zhí)行;他們
摘要因?yàn)樗麄兒雎栽S多細(xì)節(jié)真實(shí)(硬件)機(jī)。
摘要機(jī)提供一個(gè)中間的局域網(wǎng)—計(jì)編譯階段。他們縮小差距之間的高級(jí)別的編程語言和低水平的一個(gè)真實(shí)的機(jī)器。指令一個(gè)抽象機(jī)是針對(duì)特別—拉爾操作要求執(zhí)行操作的具體的源語言或一類來源語言。最常見的抽象機(jī)器程序商店和一個(gè)國(guó)家,通常包括一個(gè)堆棧和寄存器—流淚。該程序是一個(gè)指令序列,與特殊寄存器(程序計(jì)數(shù)器)指著下一個(gè)要執(zhí)行的指令。程序計(jì)數(shù)器先進(jìn)的指令完成時(shí)。這一文學(xué)學(xué)士—碳化硅控制機(jī)制的一個(gè)抽象機(jī)也被稱為其執(zhí)行循環(huán)。
1.1. 替代特征
上述特性適合許多抽象的名詞—中國(guó),但一些抽象機(jī)抽象比其他的。極端的光譜焦—特點(diǎn)如下:
?抽象機(jī)是一個(gè)中間語言一個(gè)漸進(jìn)的操作語義[ 107 ]。
?抽象機(jī)設(shè)計(jì)一個(gè)真正的機(jī)器尚未建立。
1.2. 相關(guān)術(shù)語
這個(gè)詞有時(shí)也用于抽象機(jī)對(duì)于不同的概念和術(shù)語用于抽象的概念,例如有些作者使用術(shù)語仿真器或解釋器和一些使用“虛擬機(jī)的實(shí)現(xiàn)—變頻機(jī),類似我們使用的程序?yàn)閷?shí)現(xiàn)的一種算法。孫呼吁摘要機(jī)的虛擬機(jī)[ 86,91 ]?!疤摂M機(jī)廣泛用于不同的操作系統(tǒng)抽象層—等[ 121 ]和中的虛擬操作系統(tǒng)虛擬機(jī)器執(zhí)行環(huán)境運(yùn)行幾個(gè)版本的相同的操作系統(tǒng)上的同機(jī)。在理論計(jì)算機(jī)科學(xué)摘要機(jī)術(shù)語有時(shí)用來模型計(jì)算包括有限狀態(tài)機(jī),粉狀機(jī),下推自動(dòng)機(jī)和圖靈機(jī)[ 61 ]。
1.3. 什么是抽象機(jī)用于?
在上述表征抽象機(jī)利用他們作為中間語言compila—是一個(gè)基本特征。因此,實(shí)現(xiàn)—心理狀態(tài)的一種編程語言是由2階段。編譯器的實(shí)現(xiàn)和實(shí)現(xiàn)的抽象機(jī)。這是一個(gè)典型的—1分而治之的辦法。從pedagogi—加州來看,這簡(jiǎn)化了介紹和編程語言教學(xué)的原則實(shí)現(xiàn)方式。從軟件工程的角度看,在引進(jìn)的抽象層—折痕可維護(hù)性和可移植性,它允許為設(shè)計(jì)的合同。摘要機(jī)已成功的設(shè)計(jì),實(shí)現(xiàn)局域網(wǎng)—表,不符合“馮·諾依曼計(jì)算機(jī)”怎么樣。作為一個(gè)后果最為抽象機(jī)外來的或新的語言。目前只有少數(shù)摘要機(jī)器語言或語言。最近
摘要機(jī)已用于移動(dòng)代碼異構(gòu)網(wǎng)絡(luò),如互聯(lián)網(wǎng)。
除了他們的實(shí)際優(yōu)勢(shì)摘要機(jī)器是理論上的吸引力,因?yàn)樗鼈兇龠M(jìn)證明是正確的,代碼成,程序分析和變換[ 20111 ]。
2。摘要機(jī)哪里來的?
摘要目的通常是在一個(gè)特設(shè)的機(jī)器方式的基礎(chǔ)上的經(jīng)驗(yàn)與其他摘要馬—中國(guó)或口譯員或編譯器的實(shí)現(xiàn)對(duì)于同一來源語言。但也有一些系統(tǒng)—實(shí)驗(yàn)方法進(jìn)行了研究。是一個(gè)魔杖最先處理的問題,所產(chǎn)生的抗體—變頻機(jī)從語言的語義。在1982,他提出了一種基于組合算子[ 130 ]。找到合適的合子不自動(dòng)是一個(gè)艱巨的任務(wù),這是簡(jiǎn)化了以后文[ 131 ]。凸輪(1985)是在一個(gè)類似的路[ 34 ]。另一種方法是根據(jù)部分評(píng)價(jià)—評(píng)估口譯人員的實(shí)例程序折疊反復(fù)出現(xiàn)的模式在中間代碼[ 44,80,98 ]。終于有辦法通過分離[ 45,56,70,89116 ]。通過分離是一個(gè)轉(zhuǎn)變,將口譯網(wǎng)—打樁和執(zhí)行部件,后者是摘要機(jī)。它還被用于在2big系統(tǒng)(1996)自動(dòng)生成抽象機(jī)從編程語言規(guī)范[ 43,46 ]。
3。摘要機(jī)編程語言
討論在五十年代后期在美國(guó)和其他語言。各種uncols已提出康威的機(jī)[ 33 ],例如一個(gè)寄存器機(jī),雙指令。鋼機(jī)[ 119 ]有先進(jìn)的尋址模式。原則一個(gè)面向是健全的,但他們沒有多
使用的。我們認(rèn)為,這主要是由于缺乏績(jī)效所產(chǎn)生的代碼。
議員和加納帕蒂[ 30 ]給概述抽象機(jī)命令式編程語言被惡狗—租金在80年代中期。有些人認(rèn)為,工業(yè)—虛擬機(jī)[ 86 ] 20世紀(jì)90年代后期可能最終發(fā)揮作用的一個(gè)面向,但我們認(rèn)為,績(jī)效將仍然是一個(gè)問題在許多領(lǐng)域的計(jì)算。
現(xiàn)在我們要看看一些抽象的馬—中國(guó),其目的是為更溫和目標(biāo):
?AL GOL目標(biāo)代碼(1964)[ 109 ]是一個(gè)抽象algol60機(jī)。它有一個(gè)堆棧,堆程序存儲(chǔ)。其指令提供機(jī)甲—結(jié)構(gòu)變量和程序的范圍,配置內(nèi)存,訪問變量和數(shù)組,和傳值調(diào)用名稱的程序和要求。
?p4-machine(1976)是一個(gè)抽象機(jī)執(zhí)行的程序,由沃斯和同事[ 7 ]。編譯程序語言小和抽象機(jī)代碼記錄在[ 102 ]。4機(jī)有固定長(zhǎng)度指令—全文。它實(shí)現(xiàn)了塊結(jié)構(gòu)的堆棧交流—發(fā)唱片(幀),采用動(dòng)態(tài)和靜態(tài)鏈接實(shí)現(xiàn)遞歸和靜態(tài)作用域,再—L。
?折射p-machine [ 32 ]是一個(gè)抽象的馬—中國(guó)執(zhí)行的程序,用可變長(zhǎng)度指令。緊湊的字節(jié)碼該機(jī)具有特殊的指令調(diào)用帕斯卡爾的嵌套程序,稱為正規(guī)專業(yè)—程序,用于記錄和數(shù)組索引和索引檢查,處理(語言),信號(hào)和等待信號(hào)燈,等p-machine用于流行的加州巴斯卡系統(tǒng)微型計(jì)算機(jī)(約1977)。一個(gè)商業(yè)硬—軟件實(shí)現(xiàn)的p-machine了(見11節(jié))。
?(1970)可被視為一個(gè)直接執(zhí)行—一個(gè)基于堆棧的抽象機(jī)器語言痊愈:只是名字子程序代碼地址,[ 77,94 ]等。
4。面向?qū)ο蟮某橄髾C(jī),編程語言
摘要機(jī)的面向?qū)ο蟮恼Z言是通?;诙褩5暮陀刑貏e指示訪問域和對(duì)象的方法。記憶管理往往是隱含的(由一個(gè)垃圾關(guān)口—講師)在這些機(jī)器。
?Small talk - 80(1980)是一個(gè)動(dòng)態(tài)類型基于類的面向?qū)ο笳Z言,實(shí)施匯編成一個(gè)基于堆棧的虛擬機(jī)代碼。字節(jié)碼指令棧馬—nipulation,發(fā)送消息的對(duì)象(對(duì)訪問一個(gè)領(lǐng)域或調(diào)用方法),做為回報(bào),為跳,等[ 51 ](在第二版[ 52 ]省材料大部分的虛擬機(jī)器)。
?自(1989)是一個(gè)動(dòng)態(tài)類型的階級(jí)面向?qū)ο笳Z言。我有一個(gè)特別簡(jiǎn)單而優(yōu)雅的基于堆棧的虛擬機(jī)代碼:每一個(gè)指令有一個(gè)3位指令操作碼和一個(gè)5位的指標(biāo),或指令的參數(shù)—彪。八個(gè)指令:自己推,推文字,發(fā)送消息(調(diào)用方法或訪問一場(chǎng)),發(fā)送,發(fā)送,代表(以平價(jià)—),返回,和延伸指數(shù)。字節(jié)碼動(dòng)態(tài)翻譯成機(jī)器代碼[ 28 , 29 ]。
?JAVA(1994)是一種靜態(tài)類型分類面向?qū)ο蟮恼Z言,其官方中等—高級(jí)語言是靜態(tài)類型的虛擬機(jī)(虛擬機(jī))的字節(jié)碼。虛擬機(jī)有特殊的支持動(dòng)態(tài)連接,與時(shí)間驗(yàn)證(包括類型檢查)的字節(jié)碼。指令集支持對(duì)象創(chuàng)作,現(xiàn)場(chǎng)訪問,虛方法調(diào)用,鑄造一個(gè)對(duì)象的一個(gè)類,等[ 86 ]。實(shí)現(xiàn)硬件Java虛擬機(jī)(見11節(jié))。
5。摘要機(jī)字符串處理和語言文字
字符串處理語言是一個(gè)網(wǎng)絡(luò)編程—表,字符串處理而不是重點(diǎn)處理數(shù)字?jǐn)?shù)據(jù)。字符串處理語言已存在幾十年的形式,網(wǎng)站—和炮彈,編程工具,宏處理器,和腳本語言。這后一類是腳本語言來突出使用'綁定'組件[ 101 ]。組件通常是寫在一個(gè)局域網(wǎng)(系統(tǒng))—衡量,如C,但他們可能是java成分自己的。串處理語言被實(shí)施解釋一個(gè)專有的表示源文本,或執(zhí)行是基于一些低層次的抽象機(jī)。有2個(gè)原因使用適當(dāng)?shù)某橄髾C(jī):改進(jìn)執(zhí)行速度和更好的可移植性。機(jī)器獨(dú)立性有becomel的問題近年來,因?yàn)橐恍┎煌挠?jì)算機(jī)架構(gòu)已經(jīng)下降顯著隨著時(shí)間的推移,和因?yàn)樽鳛橐粋€(gè)通用的弗蘭卡幾乎每一個(gè)平臺(tái),目前使用的。
我們將討論的突出例子早期串處理語言,在一個(gè)抽象的馬—中國(guó)主要是用來實(shí)現(xiàn)機(jī)獨(dú)立—證據(jù)。
?[ 54 ]是一個(gè)字符串處理語言一個(gè)強(qiáng)大的模式匹配裝置。語言已被廣泛用于生成編譯器,符號(hào)代數(shù)軟件包,等在摘要馬—中國(guó)(南港)數(shù)據(jù)上操作的描述,這些—那是標(biāo)量數(shù)據(jù)或資料,以及數(shù)據(jù)類型和一些控制信息。本數(shù)據(jù)表示可以把字符串作為變量,并提供數(shù)據(jù)調(diào)度經(jīng)營(yíng),在許多相同的方式作為面向?qū)ο笙到y(tǒng)提供的今天。機(jī)器運(yùn)轉(zhuǎn)的一對(duì)堆,一堆垃圾收集(標(biāo)記掃描)。本指令集的設(shè)計(jì)首先提供高效支持最常見的操作和秒—ondly緩解任務(wù),它移[ 53 ]。
? [ 23 ]是一個(gè)宏處理器。宏處理器是基于一個(gè)替代模式,而普通字符串處理字符串?dāng)?shù)據(jù)處理器的操作—靈活應(yīng)用。宏處理器通常是更難比普通串親—cessors。毫升/我宏處理器實(shí)現(xiàn)通過低地抽象機(jī)。本機(jī)提供雙棧,三個(gè)寄存器,非遞歸的子程序和一個(gè)小指令集。門—能力一直是主要的驅(qū)動(dòng)程序的設(shè)計(jì)。
UNIX產(chǎn)生了深遠(yuǎn)的影響,我們考慮到腳本語言今天。與系統(tǒng)來現(xiàn)在古典工具集,包括外殼體,使。據(jù)我們所知,所有這些都是簡(jiǎn)單的—執(zhí)行使用內(nèi)部表示貼近源文本。后代這些工具目前美聯(lián)社—pearing使用抽象的機(jī)器,主要用于速度也是機(jī)獨(dú)立:
?AWK[ 1 ]構(gòu)造解析樹從源。本解釋器,然后遍歷解析樹,解釋—該節(jié)點(diǎn)。內(nèi)部節(jié)點(diǎn)對(duì)應(yīng)于一個(gè)運(yùn)算—通過它完成或控制流的構(gòu)建;葉通常數(shù)據(jù)指針。翻譯函數(shù)返回細(xì)胞包含計(jì)算結(jié)果??刂屏鳌猼erruptions喜歡休息,繼續(xù),和函數(shù)返回特殊處理的主要翻譯。
?NMARK [ 49 ]是一個(gè)版本的制作工具操作系統(tǒng),它提供了一個(gè)更靈活的方式的—懸垂斷言能夠港口這些新使文件的舊系統(tǒng),n可以翻譯其輸入到指令使摘要機(jī)(MAM)。這些都是很容易轉(zhuǎn)化為更常見的文件格式[ 78 ]。
?TCL[ 100 ]是一個(gè)命令語言設(shè)計(jì)為容易擴(kuò)展與具體應(yīng)用,網(wǎng)站—堆命令。應(yīng)用最廣泛的認(rèn)識(shí)—信息是知識(shí)庫(kù)的建立用戶界面。靈活性是實(shí)現(xiàn)主要由代表所有數(shù)據(jù)作為字符串通過使用一個(gè)簡(jiǎn)單的和統(tǒng)一的接口組件—要求。例如,而建造的語言是由一個(gè)程序,以2個(gè)字符串作為參數(shù)。第一個(gè)字符串是有條件的表達(dá),其次是要執(zhí)行的語句。該程序調(diào)用命令解釋器的遞歸評(píng)價(jià)有條件的聲明([ 100 ],321頁(yè))。抽象機(jī)沒有任何棧它自己,它依賴于實(shí)現(xiàn)。自8版本的使用一個(gè)字節(jié)碼解釋器[ 74 ]。
?perl[ 128 ]是一種腳本語言,與一個(gè)錯(cuò)誤—諒解備忘錄模塊集為各種各樣的應(yīng)用,如建筑腳本網(wǎng)頁(yè)服務(wù)器。實(shí)現(xiàn)編譯代碼如下到中間,樹結(jié)構(gòu)表示,每個(gè)指令指向下。本摘要機(jī)有七個(gè)棧是前—plicitly操縱的匯編指令。有六種不同的數(shù)據(jù)類型,以及超過300指令。引用計(jì)數(shù)是用來執(zhí)行存儲(chǔ)管理[ 118 ]。
?python是一種面向?qū)ο蟮哪_本語言[ 87 ]。python是使用基于堆棧的摘要機(jī)。指令而不是像方法來電,調(diào)度操作數(shù)的類型發(fā)現(xiàn)在堆棧。有超過100的指示,或—集團(tuán)作為代碼段,與跳躍改變控制流。Py thon使用引用計(jì)數(shù)垃圾收集器。hugunin [ 63 ]創(chuàng)造了一個(gè)實(shí)現(xiàn)jpython,而目標(biāo)的虛擬機(jī)相反的。
性能的腳本語言以上研究了一批作者。Kernighan和van Wyk [ 74 ] 比較Awk, Perl, Tcl, Java,Visual Basic, Limbo, C and Scheme.。他們表現(xiàn)這取決于基準(zhǔn)和平臺(tái),、有時(shí)比較C and Java語言,Romer et al [ 110 ],benchmark Java, Perland Tcl 使用一級(jí)緩存模擬器使用的聚合物建筑。他們得出這樣的結(jié)論:盡管JAVA語言表現(xiàn)較差,特殊的硬件支持是不必要的。
6。摘要機(jī)功能的編程和語言文字
第一個(gè)抽象機(jī)功能的所有語言,如SECD [ 81 ]和FAM[ 26 ],嚴(yán)格評(píng)價(jià),也被稱為渴望或傳值評(píng)價(jià)—評(píng)估,其中評(píng)估函數(shù)參數(shù)—在呼叫,并準(zhǔn)確地。最近,最工作重點(diǎn)是懶惰(或call-by-need)評(píng)價(jià)—其中,在函數(shù)的參數(shù)進(jìn)行評(píng)估如果需要,最多一次。一個(gè)原因是有效的—有效實(shí)施嚴(yán)格的評(píng)估是現(xiàn)在理解,因此,需要通過via—這種機(jī)器在中國(guó)已經(jīng)減少。
核心概念抽象機(jī)功能語言包括:
?堆棧一般代表的一個(gè)嵌套計(jì)算。它將中間結(jié)果待計(jì)算,激活記錄的活動(dòng)函數(shù)調(diào)用,活躍異常處理程序,等等。堆棧是有時(shí)也用于存儲(chǔ)參數(shù)—要通過職能。
?環(huán)境變量的地圖程序和使用情況。
?封閉環(huán)是用來表示一個(gè)函數(shù)作為一種價(jià)值。它通常包括一個(gè)代碼的地址(的功能—教育機(jī)構(gòu))和環(huán)境(結(jié)合自由變量的函數(shù)體)。
?堆存儲(chǔ)數(shù)據(jù)的計(jì)算。摘要摘要從機(jī)器的細(xì)節(jié)內(nèi)存管理,并因此包括指示用于分配數(shù)據(jù)結(jié)構(gòu)堆中,而不是釋放他們;堆棧被認(rèn)為是無限的。
?垃圾收集器支持的假象堆是無限的;它有時(shí)回收可達(dá)—能堆空間并使其可用于分配—對(duì)新的對(duì)象。
6.1.被嚴(yán)格限定的語言功能
?secd的設(shè)計(jì)是由Landin完成,被評(píng)價(jià)為lambda語言 [ 81 ]。該機(jī)得名于其組件的狀態(tài):評(píng)價(jià)一個(gè)棧,一環(huán)境,一個(gè)控制持有的指示執(zhí)行,并轉(zhuǎn)儲(chǔ)和持有的延續(xù)。(即,一個(gè)描述下一步該做什么)。
?Cardelli’s Functional Abstract Machine(1983)是一個(gè)擴(kuò)展和優(yōu)化播種機(jī)在第一次使用本機(jī)代碼實(shí)現(xiàn)毫升[ 26 , 27 ]。
? The Categorical Abstract Machine(1985)是德—運(yùn)用贊諾等人。[ 34 ]。其指令對(duì)應(yīng)于構(gòu)造一個(gè)直角閉范疇:身份,組成,抽象,應(yīng)用,配對(duì),和選擇。這是基地為caml實(shí)施ML.
?Zinc Abstract Machine (1990)(1990)由Leroy [ 82 ]允許更有效的執(zhí)行。這是一個(gè)
優(yōu)化,嚴(yán)格版本的Krivinemachine(參見以下部分6.2)。本機(jī)為基礎(chǔ)的字節(jié)碼版本的Leroy’s Caml Light [ 35135 ]Objective Caml和目的實(shí)現(xiàn),并用在Moscow ML 117 ]。
6.2。懶惰的語言功能
在一個(gè)懶惰的語言,功能和構(gòu)造函數(shù)的參數(shù)—試驗(yàn)的評(píng)價(jià)只有如果需要的話,然后在最
一次。雖然這可以實(shí)施的代表—有一種未鑒定的論點(diǎn),“咚”,一個(gè)函數(shù)這將評(píng)估論證和取代自身結(jié)果,呼吁其他approaches.anim效率—由于沃茲沃思的重要思想是代表親—克用圖是重寫的評(píng)價(jià)。本評(píng)價(jià)(重寫)的一個(gè)共同的子圖將汽車—巨大的利益都提到它。怎么用。曾經(jīng),多次搜索圖的表達(dá)式重寫是緩慢的。
早期實(shí)現(xiàn)的編譯程序一固定組合子(蘭布達(dá)條款全部關(guān)閉其抽象的頭);這些可能是視為圖重寫規(guī)則[ 123 ]。后來它證明是有益的,讓程序施工—試指導(dǎo)選擇合子(所謂的supercombinators)[ 62 ]。
?在他的開創(chuàng)性論文[ 123 ],戴維特納描述該sk-machine支持實(shí)施sasl。編譯器是基于等效—吐溫組合邏輯[ 113 ]和λ演算[ 40 ]。它生成的代碼基本上是一二進(jìn)制教學(xué)機(jī)。使機(jī)器更有效—投加,特納的進(jìn)一步指示,每一個(gè)功能,可證明是相當(dāng)于一個(gè)數(shù)字—S和K組合算子。
? The G-machine (1984) 目的是)評(píng)價(jià)功能程序在supercombinator形式[ 10,68104 ]。相反的解釋supercombi—nators作為重寫規(guī)則,他們被編譯成順序代碼特別指示圖操縱。G-machine是以Lazy ML [11] and HBC Haskell [13]為基礎(chǔ)的。
? The Krivine machine (1985) 是一個(gè)簡(jiǎn)單的摘要機(jī)調(diào)用名稱評(píng)價(jià)(即無共享參數(shù)評(píng)價(jià))的純lamb da微積分[ 39 ]。它只有三個(gè)指令,林—回應(yīng)三構(gòu)造的蘭布達(dá)微積分:變量訪問,抽象,和應(yīng)用—陽離子。一個(gè)顯著的特征是這個(gè)論點(diǎn)堆棧也返回堆棧(續(xù))。
? The Three Instruction Machine TIM (1986)是一個(gè)簡(jiǎn)單的抽象機(jī)評(píng)價(jià)超—合子,由費(fèi)爾貝恩和瑞[ 48 ]?;菊{(diào)用名稱版本的馬—中國(guó)是相當(dāng)類似的克里維納機(jī)。一個(gè)懶(call-by-need)版本需要額外的機(jī)械更新的共享函數(shù)參數(shù);這是有點(diǎn)復(fù)雜的實(shí)現(xiàn)效率[ 8 ]。
? The Krivine machine懶惰就像是提姆[ 36,37115 ]。另外一個(gè)可能添加一個(gè)—清楚堆與一個(gè)單一的新的指令,使遞歸let-bindings [ 116 ]。由此產(chǎn)生的機(jī)已在一些理論研究,例如[ 112 ]。
? The Spineless-Tagless G-machine (1989) 是德—運(yùn)用佩頓瓊斯作為一個(gè)精致的g-machine [ 105 ]。這是用在格拉斯哥的哈斯克爾編譯器[ 103 ]。
有許多更抽象的機(jī)器功能—傳統(tǒng)的語言比我們?cè)谶@里可以提。典型的他們開發(fā)的理論究,或在工作上一些新的語言或執(zhí)行技術(shù)。
這是最終的表現(xiàn),決定是否一個(gè)抽象機(jī)已被精心設(shè)計(jì)的。一個(gè)網(wǎng)站—綜合概述了在25語言功能實(shí)現(xiàn)提供假臺(tái)—標(biāo)記[ 58 ]。
7。摘要機(jī)器的邏輯編程和語言文字
邏輯編程語言的基礎(chǔ)上預(yù)測(cè)—美食微積分。該程序是作為一個(gè)有限集推理規(guī)則。執(zhí)行一個(gè)邏輯程序每—形式邏輯的推論。語言是最有益—永邏輯編程語言。在序言本規(guī)則在一個(gè)標(biāo)準(zhǔn)的形式被稱為普遍量化角條款。一個(gè)目標(biāo)表是用于啟動(dòng)計(jì)算,試圖找到證據(jù),這一目標(biāo)。
大多數(shù)研究在編譯的程序圍繞的Warren Abstract Machine WAM(1983)這已成為事實(shí)上的標(biāo)準(zhǔn)[ 133 ]。它提供了特殊用途的指示,其中包括統(tǒng)一的各種類型的數(shù)據(jù)和指令控制流指令執(zhí)行回溯。原來的報(bào)告沃倫[ 132 ]給出的赤裸的骨骼和有一些努力,目前本丸的教學(xué)方式[ 2,50138 ]。阿聯(lián)酋的使用四個(gè)內(nèi)存領(lǐng)域:堆,棧。
? The WAM分配結(jié)構(gòu)和變量的堆。收集垃圾自動(dòng)回收堆分配的空間結(jié)構(gòu)和變量這是不再包含從程序。
?堆棧包含點(diǎn)的選擇和環(huán)境。在選擇點(diǎn)有條目的地址以往的選擇點(diǎn),下一個(gè)選擇條款(連續(xù)指針)和一些存儲(chǔ)寄存器的丸。環(huán)境建設(shè)—sists的永久性的變量的一個(gè)條款。欺詐—ceptually堆??梢苑譃?組,所謂的那or-stacks。該and-stack包含環(huán)境和or-stack包含選擇點(diǎn)。
?在這種方法下,WAN的跟蹤哪些綁定—還有要收回后失敗和條款—前一個(gè)替代條款可以嘗試,即在回溯法。
?最后按下表,PDL,包含對(duì)節(jié)點(diǎn),它必須被視為未來的大學(xué)—分類算法。統(tǒng)一的電流匹配目標(biāo)與頭一個(gè)條款和約束變量在這兩個(gè)目標(biāo)和頭。
研究側(cè)重于代優(yōu)化—生產(chǎn)后的代碼和結(jié)果擴(kuò)展和國(guó)防部—ifications的WAN已提出。一些技術(shù),進(jìn)行了調(diào)查,索引條款,環(huán)境微調(diào),登記等—位置[ 66,88 ]和[ 108 ]提出的目標(biāo)。數(shù)據(jù)流分析,特別是抽象解釋,和尾巴遞歸優(yōu)化的基礎(chǔ)已經(jīng)被有效實(shí)現(xiàn)方法[ 125127 ]。
8。摘要機(jī)的混合編程和語言文字
編程語言的研究人員嘗試結(jié)合最好的不同語言模式雜交親—編程語言。函數(shù)式邏輯語言
摘要機(jī)器已經(jīng)被設(shè)計(jì)為擴(kuò)展抽象機(jī)的功能性語言[ 79,97 ]或擴(kuò)展的WAN[ 21,57 ]。WAN的有同樣是基礎(chǔ),抽象機(jī)器約束邏輯編程語言[ 16,65 ],同時(shí),約束邏輯編程語言O(shè)Z[ 90 ]和同時(shí),實(shí)時(shí)語言O(shè)RLANG[ 9 ]。
9。摘要機(jī)的并行編程和語言文字
asnotedbyblair [ 18 ],平行地分布模型—由于超收斂趨勢(shì)高速網(wǎng)—作品,平臺(tái)獨(dú)立性和微內(nèi)核操作系統(tǒng)。幾個(gè)這樣的模型進(jìn)行了討論在[ 73 ],最值得注意的是并行虛擬機(jī)系統(tǒng)(1990)這是一個(gè)抽象的臨—克組異相電腦作為一個(gè)單一的組件—putational資源[ 15120 ]。螺紋摘要機(jī)器擔(dān)(1993)[ 38 ]和一個(gè)類似的,但更簡(jiǎn)單摘要機(jī)[ 3,47 ]已提出的創(chuàng)—ALLY目標(biāo)架構(gòu)的多線程的高度并行機(jī)。并行和分布式體系結(jié)構(gòu)提供網(wǎng)站—計(jì)算,編程語言的實(shí)現(xiàn)—機(jī)構(gòu)對(duì)這些系統(tǒng)試圖利用。
一些重要的問題在執(zhí)行標(biāo)準(zhǔn)—并行抽象機(jī)編程語言靜態(tài)和動(dòng)態(tài)調(diào)度[ 19114 ],粒度任務(wù),分布式垃圾收集[ 69 ]和代碼和線程遷移[ 126136 ]。
10。專用抽象機(jī)
在自然語言解析抽象機(jī)對(duì)WAN進(jìn)行調(diào)查。相對(duì)于一般的臨—
日志的程序,在統(tǒng)一的語法往往大和有效的統(tǒng)一指令
添加到WAN[ 17139 ]。超文本摘要機(jī)(1988)是一個(gè)服務(wù)器一個(gè)超文本存儲(chǔ)系統(tǒng)[ 25 ]。數(shù)據(jù)結(jié)構(gòu)—對(duì)機(jī)器的圖形,背景,鏈接節(jié)點(diǎn),和屬性。指令的機(jī)器的初始—吞并交易與服務(wù)器訪問和修改這些。
11.結(jié)論
近40年來抽象機(jī)已用于編程語言的實(shí)現(xiàn)。如新語言的出現(xiàn),從而將抽象機(jī)器工具來處理復(fù)雜的實(shí)現(xiàn)語言文字。而抽象的機(jī)器是一個(gè)有用的工具橋之間的差距,一個(gè)高層次的語言和低層建筑,還有許多工作要做發(fā)展理論抽象機(jī)。這種理論是必要的支持系統(tǒng)的開發(fā)抽象機(jī)器語言和結(jié)構(gòu)規(guī)格。
文獻(xiàn)
[1] A.V. Aho, B.W. Kernighan, P.J. Weinberger, The AWK Programming Language, Addison-Wesley, Reading, MA,1988.
[2] H. A?t-Kaci, Warren’s Abstract Machine – A Tutorial Reconstruction, MIT Press, Cambridge, MA, 1991.
[3] Engelhardt, Alexander, Wendelborn, An overview of the Adl language project, Proceedings of the Conference on High Performance Functional Computing, Denver, Colorado, 1995.
[4] K.A.M. Ali, OR-parallel execution of Prolog on BC-machine, Proceedings of the Fifth International Conference and Symposium on Logic Programming, MIT Press, Cambridge, MA, 1988, pp. 1531–1545.
[5] K.A.M. Ali, R. Karlsson, Scheduling OR-Parallelism in MUSE, Proceedings of the 1990 North American Conference on Logic Programming, MIT Press, Cambridge, MA, 1990,pp. 807–821.
[6] K.A.M. Ali, R. Karlsson, The MUSE Or-Parallel Prolog Model and its Performance, Proceedings of the Eighth International Conference on Logic Programming, MIT Press, Cambridge, MA, 1991, pp. 757–776.
[7] U. Ammann, Code Generation of a Pascal-Compiler, In: D.W. Barron (Ed.), Pascal – The Language and its Implementation,Wiley, New York, 1981.
[8] G.Argo,Improving the three instruction machine, Fourth International Conference on Functional Programming Languages and Computer Architecture, Imperial College,London, Addison-Wesley, Reading, MA, September 1989, pp.100–112.
[9] J.L. Armstrong, B.O. D?cker, S.R. Virding, M.C. Williams, Implementing a functional language for highly parallel real time applications, Proceedings of the Conference on Software Engineering for Telecommunication Systems and Services (SETSS’92), Florence, 1992.
[10] L. Augustsson, A compiler for lazy ML, 1984 ACM Symposium on Lisp and Functional Programming, Austin, Texas, ACM, 1984, pp. 218–227.
[11] L. Augustsson, The interactive lazy ML system, J. Funct. Programming 3 (1) (1993) 77–92.
[12] L. Augustsson, T. Johnsson, Parallel graph reductionwith the hν,Gi machine, Proceedings of the Conference on Functional Programming Languages and Computer Architecture (FPCA’89), London, ACM, New York, 1989,pp. 202–213.
[13] L. Augustsson, HBC – The Chalmers Haskell compiler, Web Page, 1999, URL: http://www.cs.chalmers.se/augustss/ hbc.html.
[14] J. Batali et al., The Scheme-81 architecture, system and chip, MIT Conference on Advanced Research in VLSI, 1982.
[15] A. Beguelin, J. Dongarra, A. Geist, B. Manchek, V. Sunderam, Recent Enhancements to PVM, Internat. J. Supercomput. Appl. 9 (2) (1995).
[16] C. Beierle, Formal design of an abstract machine for constraint
logic programming, IFIP Congress, vol. 1, 1994, pp. 377–382.
[17] C.Beierle,G.Meyer,H.Semele,Extending the Warren Abstract Machine to Polymorphic Order-sorted Resolution, Technical Report IWBS Report 181, Institute forKnowledge-based Systems, Stuttgart, 1991.
[18] G.S. Blair, A convergence of parallel and distributed computing, in: M. Kara, J.R. Davy, D. Goodeve, J. Nash (Eds.), Abstract Machine Model for Parallel and Distributed Computing, IOS Press, Amsterdam, 1996.