CN101000557A - 虚拟机 - Google Patents
虚拟机 Download PDFInfo
- Publication number
- CN101000557A CN101000557A CN 200610001198 CN200610001198A CN101000557A CN 101000557 A CN101000557 A CN 101000557A CN 200610001198 CN200610001198 CN 200610001198 CN 200610001198 A CN200610001198 A CN 200610001198A CN 101000557 A CN101000557 A CN 101000557A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- module
- program
- function
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供了一种虚拟机,可以使由跨平台语言编写的应用程序在多种不同的低端手持终端中运行,虚拟机包括:指令集模块,用于存储按照一定顺序排列的指令和函数;以及执行模块,用于调用指令集模块中的指令和函数,将跨平台语言编写的应用程序转换成机器可执行代码;存储模块,用于存储虚拟机运行时使用的变量、运行信息以及程序。使用本发明的虚拟机,能够使应用程序不经过任何修改就可以应用到多种不同的低端手持终端上,实现了跨平台的目的。
Description
技术领域
本发明涉及一种虚拟机,可以使由跨平台语言编写的应用程序在多种不同的低端手持终端中运行,实现了跨平台的功能。
背景技术
目前,有多种型号的电子辞典,它们的开发手段各不相同,运行的效果也有很大区别。文曲星以前具有的开发手段主要有6502汇编语言、GVBASIC语言和WINIDE语言(C语言)。这三种方式各有利弊,汇编语言执行速度快,但学习困难开发效率低,通用性差,而且汇编语言的可读性差,需要自己编写函数,要求用户对硬件有较深入的了解;GVBASIC语言容易学习,适用的机型多,但速度慢,功能有限而且不稳定,GVBASIC语言的目标代码比汇编语言大一点,但函数很少,编程效率较汇编语言效率高很多,也要求用户对硬件有一定程度的了解;WINIDE语言容易学习,速度快,函数较丰富,编程效率较高,但系统的SRAM和程序的大小有一定的限制,程序编译后代码不能超过32kbytes,适用的机型少。
而且,由于机型不同,要求在文曲星中使用的应用程序也不一样,所以必须为每种类型的低端手持终端下载适合的应用程序,这样加大了开发成本,而且使用起来也不方便,不能够实现跨平台。因此,需要一种使应用程序不经过任何修改就可以在多种不同手持终端平台上运行的装置,能够屏蔽硬件的多样性,达到跨平台的目的。
发明内容
本发明的目的在于提供能够克服现有技术中存在的至少一种缺陷的虚拟机,使由跨平台语言编写的应用程序无需修改就可以在多种不同的低端手持终端中运行,虚拟机包括:
指令集模块,用于存储按照一定顺序排列的指令和函数;以及
执行模块,用于调用指令集模块中的指令和函数,将跨平台语言编写的应用程序转换成机器可执行代码;以及
存储模块,用于存储虚拟机运行时使用的变量、运行信息以及程序。
其中,低端手持终端是电子词典,跨平台语言是GVmaker语言。
在虚拟机运行过程中,执行模块通过连接外部程序和内部程序来实现跨平台。执行模块通过其内部的文件系统将一部分应用程序调入低端手持终端的存储模块中;然后调用指令集模块中的指令,将应用程序代码转换成机器可执行代码;以及将机器可执行代码传送到操作系统模块,通过操作系统模块对硬件模块中的硬件进行控制。
执行模块将存储模块分为公共变量区、局部变量区、堆栈区、和程序区(即,中间指令区)。其中,公共变量区、局部变量区、堆栈区、和程序区分别与应用程序开发装置的公共变量区、局部变量区、堆栈区、和程序区相对应。
指令集模块中存储低端手持终端中的所有可执行指令和函数。其中,可执行指令和函数与低端手持终端应用程序开发装置中使用的指令和函数相对应。
通过在电子辞典中应用GVmaker虚拟机可以实现在不同型号的电子辞典中使用GVmaker语言编写的相同应用程序,从而实现跨平台的目的。
附图说明
图1是根据本发明的采用虚拟机的手持终端系统的整体架构100;
图2是根据本发明的GVmaker应用程序的开发装置200的框图;
图3是根据本发明的GVmaker应用程序的运行平台(手持终端)300的框图;
图4是根据本发明的虚拟机400的框图;
图5是根据本发明的具体实施例的虚拟机工作的流程图。
具体实施方式
GVmaker语言是一种跨平台语言。这里所说的跨平台是指同一程序的目标代码能够不加修改地在不同硬件平台上直接运行,与可移植不同。但是,跨平台不是绝对的,而是相对的。绝对的跨平台语言要么是不存在的,要么是无用的。举例来说:有一个GVmaker程序需要20KB的内存才能运行,那么这个程序在只有8KB内存的平台上显然无法正常运行。那么为了保证所有GVmaker程序都能在8KB内存的平台上运行,是不是可以限定所有GVmaker程序只准使用8KB的内存呢?答案是,不能为了绝对的跨平台能力而限制语言本身的能力。
图1示出了GVmaker技术的整体架构100。如图1所示,为了达到程序使用的通用性,GVmaker技术采用了虚拟机运行方式。编译好的程序可以在各种平台上运行,而不需要任何修改。但需要为各种平台开发虚拟机来执行GVmaker程序。
GVmaker技术的整体架构100包括:开发装置(GVmakerIDE)200和运行平台300两个部分。开发装置200用于开发在运行平台上运行的应用程序。开发装置200包括:用户界面模块208、编辑器202、编译器204和模拟器206。运行平台300为电子词典等低端手持终端,在此为文曲星,包括:应用程序模块302、虚拟机304、操作系统模块306和硬件模块308。其中,硬件模块308包括程序存储器、数据存储器、随机存取存储器、键盘、显示屏、触摸屏、发音电路和喇叭等。
图2是根据本发明的手持终端应用程序的开发装置200的框图。该开发装置用于使用跨平台语言开发能够在多种手持终端上运行的应用程序。其中,跨平台语言是GVmaker语言。
该开发装置200包括:
编辑器202,用户在其上编辑源代码,并将源代码显示在用户界面模块208上。用户可以在编辑器中输入源代码,并且对源代码进行修改。在编辑器中可以设置书签,书签用于记录在源代码中用户想要设置的位置。
编译器204,接收到用户通过用户界面模块208输入的编译命令后,对编辑器202编辑后的源代码进行编译,对源代码进行词法分析、语法分析、语义分析、和目标代码生成,即,将源代码转换成字节码(byte code),生成可以在多种手持终端中运行的应用程序。当在编译过程中出现错误时,编译器可以产生编译提示信息,通过用户界面模块显示给用户,用户可以根据编译提示信息对源代码进行修改。
模拟器206,接收到用户通过用户界面模块208输入的模拟命令后,模拟手持终端中的运行环境,使编译器编译好的应用程序在其上模拟运行,用户根据模拟结果对源代码进行修改、调试。
用户界面模块208,用于接收用户输入的命令,并显示编辑器202、编译器204、和模拟器206的信息。用户界面模块可以在不同窗口中同时打开同一源代码文件,查看同一源代码的不同部分。
当对源代码调试完毕后,可以通过PC连接线将编译后的应用程序(字节码文件)传送到文曲星中,作为在文曲星中运行的应用程序。
图3是根据本发明的应用程序的运行平台300的框图。运行平台包括应用程序模块302、虚拟机304、操作系统模块306、以及硬件模块308。
应用程序模块302,调试完毕以后通过PC连接线将应用程序(字节码文件)传送到运行平台(在此为文曲星),应用程序模块用于储存开发装置产生的应用程序。
虚拟机304,用于将应用程序转换成机器可执行代码,并将转换后的机器可执行代码传送到操作系统,对硬件模块中的硬件进行控制,实现相应功能。
操作系统模块306,用于调用所需的硬件资源。
硬件模块308,用于实现应用程序所要实现的功能。
图4示出了根据本发明的虚拟机400的框图。
前面介绍的GVmaker语言的跨平台能力是由GVmaker虚拟机(LVM)来保证的。显然,如果编译器把GVmaker程序直接编译为某一种CPU的机器码是不行的。因为跨平台首先要能跨CPU。如果某种语言的程序的目标代码只能在某种CPU上运行,这样的语言是不配称为跨平台语言的。GVmaker编译器把GVmaker程序编译为虚拟机器码。虚拟机器码可以由GVmaker虚拟机识别并执行。为不同的硬件平台配备各自的GVmaker虚拟机,从而保证同一GVmaker程序的目标代码能够在不同的硬件平台上运行,也就是跨平台。
虚拟机是计算机(包括嵌入式系统)的一套专门针对当前硬件的指令解释系统,它建立一层本机与外部应用程序无关的机制,这样外部应用程序就可以很方便地被移植,甚至不用修改就可以在硬件不同的其他机器上运行。
虚拟机400包括:
指令集模块402,用于存储按照一定顺序排列的指令和函数;
执行模块404,用于调用指令集模块中的指令和函数,将跨平台语言编写的应用程序转换成机器可执行代码;
存储模块406,用于存储虚拟机运行时使用的变量、运行信息以及程序。
其中,低端手持终端是电子词典,跨平台语言是GVmaker语言。
在虚拟机运行过程中:
执行模块404将一部分应用程序调入低端手持终端的存储模块406中;
执行模块404调用指令集模块402中的指令,将应用程序代码转换成机器可执行代码;以及
执行模块404将机器可执行代码传送到操作系统模块,通过操作系统模块对硬件模块中的硬件进行控制。
执行模块404将存储模块406分为公共变量区、局部变量区、堆栈区和程序区。其中,公共变量区、局部变量区、堆栈区和程序区分别与应用程序开发装置的公共变量区、局部变量区、堆栈区和程序区相对应,以保证运行结果与在应用程序开发装置中模拟的结果一致,保证系统运行的稳定性。
指令集模块存储低端手持终端中的所有可执行指令和函数。其中,可执行指令和函数与低端手持终端应用程序开发装置中使用的指令和函数相对应。指令集的基本格式类似JAVA,采用4字节指令,即,每个指令用4个字节表示。该指令集涵盖了几乎所有的标准C的指令范围,包括:基本运算、数学函数库、时间控制函数、逻辑运算操作、键盘及输入板的控制、中英文输入输出函数、文件操作、声音控制、通讯控制、图形操作、一级菜单操作等。
指令集模块中定义了256条基本指令,此外可以在此基础上扩展。而且虚拟机的指令集模块中的指令必须与应用程序开发装置使用的指令集中的指令相对应,否则会引起不可预料的结果。
GVmaker虚拟机保证了操作的安全性,一方面防止了程序非法访问内存,另一方面防止程序执行非法或危险的指令。任何内存访问都要通过虚拟机来执行,所以虚拟机本身有能力判断哪些地址是非法的,从而防止非法访问内存。任何虚拟机代码也必须通过虚拟机才能变为真实的机器可识别指令,所以虚拟机可以过滤危险的指令。
图5是以文曲星300G为例说明虚拟机的工作流程图。
在本实施例中,文曲星300G启动后,文曲星将虚拟机调入内存(步骤502)。当遇到需要执行的虚拟机函数时,保护现场并将系统当前运行指针移动到虚拟机的指令前(步骤504)。虚拟机的执行模块将文曲星300G的程序存储器中的应用程序代码直接调入随机存取存储器中(主要便于处理数据和更多的函数),并将执行指针移动到虚拟机的第一个执行函数代码前,开始执行(步骤506)。虚拟机的执行模块根据文曲星的文件管理信息找到所有符合虚拟机命名文件规范相关的GVmaker相关代码,多个应用程序代码文件(步骤508),并将其显示到屏幕上。虚拟机按照找到的应用程序代码文件(例如main.gvm)的变量需求来分配变量(步骤510)。当虚拟机执行应用程序代码(例如,main.gvm)时,每次从程序存储器按照顺序取出256字节代码到随机存取存储器,然后对代码进行解释(步骤512)。由于文曲星中的应用程序代码与虚拟机的指令集中的基本指令具有对应关系,所以虚拟机每次解释应用程序代码都会到指令集中抽取对应的指令去执行。虚拟机中的指令集集合了文曲星系统内部所有可执行的函数,供虚拟机调度,从而实现了屏蔽内部硬件的功能。
虚拟机需要实现的功能主要包括:
内存管理:实现应用程序需要的全局变量、局部变量和内部堆栈的分配管理,在本实施例中,在随机存取存储器上划分出一段用于变量的分配。
数学运算功能:实现基本的算术四则运算和特殊的数据函数,诸如,开方、平方、倒数等。
字符串操作:各种字符格式的判断,大小写转换,字符串的搜索、合并、比较和长度等。
实现输入和输出函数的功能:主要包括文本格式的输出函数(printf)、屏幕定位函数、定位输出文本函数(outtxt)、各种图形函数(诸如,画点、线、圆、椭圆、方框等、文件填图函数(从文件直接读出图形数据放入显示缓冲区显示)、键盘输入和触摸屏输入函数(getchar、inkey)等。
文件操作:包括文件的打开(fopen)、关闭(fclose)、读(freadgetc)、写(fwrte putc)定位(fseek)、文件长度(ftell)、结束判断(feof)、删除(deletefile)、目录的创建(makedir)、进入(chdir)、列表(filelist)等。
实现其他函数的功能:实现诸如Beep报警函数、时间延时函数(delay)、时间设置和查看函数(settime、gettime)、声音控制函数(音量、暂停、继续)、声音播放函数等的功能。
实现程序流程控制函数(exit)的功能:在一个应用程序中调用另外的应用程序。
实现特殊函数的功能:可以根据硬件和应用程序的要求增加临时函数,实现特殊功能,但是这样不利于程序的移植。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种虚拟机,其特征在于,所述虚拟机可以使由跨平台语言编写的应用程序在多种不同的低端手持终端中运行,所述虚拟机包括:
指令集模块,用于存储按照一定顺序排列的指令和函数;执行模块,用于调用所述指令集模块中的指令和函数,将所述跨平台语言编写的应用程序转换成机器可执行代码;以及
存储模块,用于存储虚拟机运行时使用的变量、运行信息以及程序。
2.根据权利要求1所述的虚拟机,其特征在于,所述低端手持终端是电子词典。
3.根据权利要求1所述的虚拟机,其特征在于,所述跨平台语言是GVmaker语言。
4.根据权利要求1所述的虚拟机,其特征在于,所述执行模块连接外部程序和内部程序,以实现跨平台。
5.根据权利要求1所述的虚拟机,其特征在于:
所述执行模块通过其内部的文件系统将一部分应用程序调入所述低端手持终端的存储模块中;
所述执行模块调用所述指令集模块中的指令,将应用程序代码转换成机器可执行代码;以及
所述执行模块将所述机器可执行代码传送到操作系统模块,通过所述操作系统模块对硬件模块中的硬件进行控制。
6.根据权利要求5所述的虚拟机,其特征在于,所述存储模块被分为公共变量区、局部变量区、堆栈区、和程序区。
7.根据权利要求6所述的虚拟机,其特征在于,所述公共变量区、局部变量区、堆栈区、和程序区分别与所述应用程序开发装置定义的公共变量区、局部变量区、堆栈区、和程序区相对应。
8.根据权利要求6或7所述的虚拟机,其特征在于:
所述公共变量区用于存储所述虚拟机运行所需的公共变量;
所述局部变量区用于存储所述虚拟机运行所需的局部变量;以及
所述程序区用于存储所述虚拟机将要解释的应用程序;以及
所述堆栈区用于存储所述虚拟机从所述程序存储器调入的应用程序的现场信息。
9.根据权利要求1所述的虚拟机,其特征在于,所述指令集模块存储所述低端手持终端中的所有可执行指令和函数。
10.根据权利要求9所述的虚拟机,其特征在于,所述可执行指令和函数与所述低端手持终端应用程序开发装置中使用的指令和函数相对应。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2006100011980A CN101000557B (zh) | 2006-01-13 | 2006-01-13 | 虚拟机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2006100011980A CN101000557B (zh) | 2006-01-13 | 2006-01-13 | 虚拟机 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101000557A true CN101000557A (zh) | 2007-07-18 |
CN101000557B CN101000557B (zh) | 2011-10-19 |
Family
ID=38692541
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006100011980A Expired - Fee Related CN101000557B (zh) | 2006-01-13 | 2006-01-13 | 虚拟机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101000557B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102004662A (zh) * | 2010-12-07 | 2011-04-06 | 江南大学 | 嵌入式可裁剪式虚拟机 |
CN103368897A (zh) * | 2012-03-26 | 2013-10-23 | 腾讯科技(深圳)有限公司 | 传递应用程序的方法、装置及系统 |
WO2015010479A1 (zh) * | 2013-07-25 | 2015-01-29 | 成都品果科技有限公司 | 一种基于虚拟指令的应用程序移植方法 |
CN107436796A (zh) * | 2017-08-07 | 2017-12-05 | 苏州速显微电子科技有限公司 | 一种基于寄存器的虚拟机及其实现方法 |
CN111767116A (zh) * | 2020-06-03 | 2020-10-13 | 江苏中科重德智能科技有限公司 | 面向机械臂程序开发编程语言的虚拟机及对汇编文件的运行方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1149746C (zh) * | 2001-10-15 | 2004-05-12 | 倚天资讯股份有限公司 | 手持式电子装置及其显示画面转输出系统与方法 |
-
2006
- 2006-01-13 CN CN2006100011980A patent/CN101000557B/zh not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102004662A (zh) * | 2010-12-07 | 2011-04-06 | 江南大学 | 嵌入式可裁剪式虚拟机 |
CN103368897A (zh) * | 2012-03-26 | 2013-10-23 | 腾讯科技(深圳)有限公司 | 传递应用程序的方法、装置及系统 |
WO2015010479A1 (zh) * | 2013-07-25 | 2015-01-29 | 成都品果科技有限公司 | 一种基于虚拟指令的应用程序移植方法 |
CN107436796A (zh) * | 2017-08-07 | 2017-12-05 | 苏州速显微电子科技有限公司 | 一种基于寄存器的虚拟机及其实现方法 |
CN111767116A (zh) * | 2020-06-03 | 2020-10-13 | 江苏中科重德智能科技有限公司 | 面向机械臂程序开发编程语言的虚拟机及对汇编文件的运行方法 |
CN111767116B (zh) * | 2020-06-03 | 2023-09-05 | 江苏中科重德智能科技有限公司 | 面向机械臂程序开发编程语言的虚拟机及对汇编文件的运行方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101000557B (zh) | 2011-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Deitel | Java how to program | |
CN101000555B (zh) | 手持终端系统 | |
CN103164300A (zh) | 一种移动终端触摸屏自动测试方法及装置 | |
CN101000557B (zh) | 虚拟机 | |
CN100492387C (zh) | 基于Keil C51的软件保护开发的方法和系统 | |
CN103064721A (zh) | 多种解释性编程语言间的第一类对象共享 | |
Burns | Building a text analysis pipeline for classical languages | |
Deitel et al. | Java SE 8 for programmers | |
CN202177891U (zh) | 一种操作嵌入式计算机系统开发工具的装置 | |
CN103019801B (zh) | 一种应用于高速数字io波形引擎的编译器 | |
CN101593257B (zh) | 基于.Net虚拟机的软件保护系统和方法 | |
KR100846203B1 (ko) | 모바일 어플리케이션의 생성 방법 및 이를 구현하기 위한프로그램을 기록한 기록매체 | |
Reiser | Bail: a Debugger for Sail | |
CN115292194B (zh) | 流程调试的方法、电子设备及计算机可读存储介质 | |
CN101266622A (zh) | 跨平台移动存储介质数据系统 | |
Devedžić et al. | Clarifying the meta | |
Shubo | Design and Implementation of English Intelligent Electronic Dictionary System based on Android Platform | |
Xia-xia et al. | An Innovation of Chinese Input Based on Android Multimedia Mobile Device | |
Zhou et al. | Implementation of G Language | |
Spence | Rapid Mobile Enterprise Development for Symbian OS: An introduction to OPL application design and programming | |
bin Uzayr | Mastering Flutter: A Beginner's Guide | |
Beevi et al. | Enhancing flexibility and portability of Execution Preserving Language Transformation using Meta programming | |
Cruz | Basic R | |
Edlund et al. | EPOC Visual Builder | |
Mohamed | Python for Deep Learning: A General Introduction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20111019 Termination date: 20140113 |