|
在讨论Fhat指令集之前,本节将讨论Fhat RVM。此机器体系结构以OWL表示,并与RDF网络的本体层中的其他资源共存。haltfhatinstruction programlocationframehasframe[0..*][0..1]returntopreturnstackinstructionrdf:firegrstrdf:rest[0.1][0.1]blocktop[0..*]frameVariablerdf:lihasvaluerdf:resourceoperandtoperandstackrdf:rest[0.1][0.1]rvm[0..*]Dreusexsd:Boolean[1][0.1]BlockStackBlockRDF:figurrstrDF:REST[0.1][0.1][0.1]图5:Fhat虚拟机的本体模型。Fhat RVM有8个主要组件。为了便于参考,下面列举了这些问题。以下小节将更详细地讨论每个组件。Marko A.Rodriguez-2007 231。FHAT:解释指令并使用其各种组件处理这些指令的CPU。停止:当false时暂停Fhat处理,当true时允许处理。MethodReuse:确定是否在对象实例中重用方法三重代码。程序位置:指向正在执行的当前指令(即PC机)的指针。5。BlockStack:一个rdf:列表,可以按下和弹出以进入和退出Blocks。OperandStack:一个rdf:列表,可以为算术计算推入和弹出。框架:用于存储局部变量的方法唯一环境。ReturnStack:一个RDF:list,它提供了对calleda方法的指令和该方法的框架的引用。虽然所有这些组件都用RDF表示,但只有Fhat有一个外部软件组件。Fhat的软件实现在图3.4.0.1中称为“虚拟机械过程”FhatFhat是Fhat RVM的主要组成部分。Fhat是整个Fhat体系结构中最复杂的组件。Fhat组件的高级Neno伪代码thing Fhat{execute(){while(!this.halt&&this.programlocation!=null){Instruction i=this.programlocation if(i typeof Block){...}else if(i typeof if){...}else if(i typeof if){...}else if(i typeof Expression){...}else if(i typeof Set){...}..../*update programlocation*/}}以上伪代码应该用虚拟机进程的语言例如,假设一个名为FHAT1的Neno实现的Fhatinstance。在这种情况下,另一个名为Fhat2的Fhat正在处理FHAT1.Fhat2可以在另一个名为Fhat3的Fhat上运行,或者接地到将代码转换为本机语言的其他语言中。这是可能的,因为Neno/Fhatis图灵完成,因此,可以运行自己的模拟。当运行自身的模拟时,就会创建一个完整的RDF虚拟机。在该仿真环境中,Fhat RVM的状态和过程都用RDF表示。Fhat的当前版本支持xsd:anysimpleType的大多数常见用法,其中一些用法总结如下:oxsd:boolean:Not,equalsoxsd:integer,xsd:float,xsd:double:Arithmetic,compareoxsd:string:Add,compareoxsd:date,xsd:datetime:Add,Subtract,compare.当使用术语Fhat时,它指的是整个虚拟机,当使用电传键入的术语Fhat时,它指的是由URI Fhat定义的虚拟机进程。Marko A.Rodriguez-2007 244.0.2 halta在任何时候,都可以通过将Fhat的halt属性设置为truexsd:boolean来强制Fhat可以设计一个Neno程序来运行amaster Fhat,该Fhat引用其所有从Fhat的halt属性。通过设置halt属性,Fhat主程序可以控制哪个Fhat从程序可以处理任何一次。
|