Contact us at: [email protected] Home
Announcing ...
An Open Alternative to Java and C-Sharp...
Internet Virtual Machine
Introduction
About 4 years ago, we attempted,
unsuccessfully, to port a popular 3D game to Java. It became apparent that,
while Java is a good language for small applications, Java is not adequate to address the needs of
current/future high-end applications, normally written in the much more
powerful and versatile C/C++ languages.
Java is slow,
and requires all C/C++ applications to be completely rewritten. Often,
applications ported from C/C++ to Java produces
product at high cost. Java seems to be
particularly weak for applications targeted at the interactive entertainment industry, such as video games.
Since the interactive
entertainment industry is one of the largest industries in the home
computer and game console world, we attempted to provide a solution.
It was through that effort that Internet
Virtual Machine and it's virtual machine were born.
3D
Games/Home-Applications as an Advertising Medium
Internet Virtual Machine was designed to help bring
high-speed applications to the Internet to run on most machines and
operating systems, with a minimum of performance degradation.
High-speed applications over the Internet, such
as 3D games, will provide a new medium for
advertisers to attract target audiences
with. Since most games are played for many hours at a time, these types of
applications will provide captive audiences for
advertisers for long periods of time.
This increases the
effectiveness of an advertisement, allowing the provider of the
application to charge premium rates to
carry an ad, versus an HTML page, which is typically viewed for a very short
period of time.
The ability of Internet Virtual Machine
applications to run on many platforms, regardless of hardware or host
operating system, ensures the largest possible
target audience for advertisers.
Internet Virtual Machine will provide the ability
for C/C++ applications from many platforms to be ported for Internet use. It provides
a cost-effective way to bring traditional
applications from many platforms to the home, as well as new
applications for entertainment, home productivity and managment.
This document is a detailed description of
Internet Virtual Machine.
32 Bit C/C++ Run-Anywhere Applications
Standard 32-bit C/C++ programs can be compiled for use on the Internet, using IVM as the execution base. IVM was designed to save huge amounts of resources, time, and money, by allowing existing applications to be ported as they are written, rather than spending months rewriting the applications in alternate languages, as is necessary with current Internet applications.
Internet Virtual Machine is targeted for the 99%
of the computer applications world-wide which are written in 32 bit C/C++, as
well as new C/C++ applications. Internet Virtual Machine uses the
popular GCC compiler base to compile a binary that can be run on any platform
supporting Internet Virtual Machine.
Portable and Standard
Internet Virtual Machine uses POSIX and BSD compatible libraries, thus bringing another established standard to the Internet.
Internet Virtual Machine was developed on Red Hat Linux 6.0. It uses a combination of BSD and GNU libraries as its core. Initial target platforms will be most UNIX-like operation systems, including most current Linux platforms, most current BSD platforms, and Solaris 7 (86 version). Ports are also planned for Windows 32 environments.
Browsers and browser plug-ins, as well as stand-alone Internet Access boxes, such as personal assistants and home entertainment units, are also potential targets for Internet Virtual Machine.
The X Window system and Motif have already been ported to Internet Virtual Machine, as well as other libraries.
In addition, Internet Virtual Machine library ports are planned for the libraries GTK, OpenGL, Wine (Windows Emulation), and several other open source libraries. This will enable many applications originally written for Windows, OpenGL, and other platforms, to be loaded and run straight off the Internet, eliminating the need to have a particular computer or operating system to run a particular application.
Internet Virtual Machine will enable the operation of applications,
games, and interactive entertainment, on new and upcoming platforms, even
on machines that are normally not categorized as home computers, such as cable
boxes. It will also keep the costs of the porting of applications for Internet
use low.
Optimized for Direct Support of Most Hardware
The virtual machine for Internet Virtual Machine (IVM) uses a register set and model that can be mapped directly on top of hardware registers, for maximum speed and performance. IVM also contains many new compiler-friendly addressing modes to obtain maximum speed and efficiency. Internet Virtual Machine was designed specifically to allow 3D-games and other high speed applications to be developed and/or ported for Internet use.
In addition, the virtual machine (IVM) supports dual endian binaries
as its native file format. There are no speed penalties related to endian on
any platform. The virtual machine will execute the program in the host
machine’s native endian.
Versatile Enough to Support Any Language
The virtual machine (IVM) will be able to support Fortran, Pascal, Native
Compiled Java, and other languages in the future. The IVM engine is designed to
support any language normally supported by conventional hardware.
Open Source Support
GCC and related utilities are already open source.
The Internet Virtual Machine version of the GCC compiler (igcc and ig++)
are available. An open version of the virtual machine is available. That version is written in C and is designed
to be extremely portable.
Technical Information
The rest of this document details to more technical aspects of Internet Virtual Machine and it's virtual machine (IVM).
General Registers
This register model enables most processors, including the Pentium series, to
optimize most of the general register set to actual hardware registers.
|
4 |
32 bit general purpose registers |
|
3 |
64 bit floating point registers |
|
2 |
64 bit general purpose registers |
|
1 |
32 bit stack pointer |
|
1 |
32 bit local frame register |
|
1 |
32 bit program counter |
Advanced CISC Model
IVM features a rich, CISC based instruction set, designed to do as much possible in a single instruction. This allows executables to run on most platforms at high speeds.
Features Source-Source-Destination modes for most 32 bit integer and floating point operations, as well as advanced multimedia operations. Also features extensive memory-register and memory-memory operations.
IVM combines stack processing with the register model. IVM is capable of operating purely as a stack based machine, or in any combination with normal register modes. This would allow JIT compilers for other virtual machines to be hosted by IVM, picking up the speed advantage that IVM offers, as well as its portability.
NOTE - Much better performance is obtained by sticking to the register models in IVM.
New Addressing Modes
Many new addressing modes are incorporated into IVM. These addressing modes allow local variables to take the place of traditional registers in most address modes, such as base-index register pairs, in structure and array access. Any local frame variable can be used in the same place that a general-purpose register could for most addressing modes and instructions.
These new addressing modes allow IVM to perform more operations in a single instruction, resulting in a much faster and more efficient virtual machine. It also results in more efficient code, as the new addressing modes are extremely compiler-friendly.
Straight Forward Native Interface
Calls into the host machine are straight forward, with a pointer to the parameters being handed directly to the host. Because the virtual machine (IVM) uses real pointers, native code can utilize the pointers handed to it by the virtual machine directly.
Library functions can also be substituted local to
the platform the virtual machine is running on. As long as a native function
produces identical results to an IVM library function, the native function may
replace the library function. This approach will allow applications to always
be up-to-date on the latest hardware and software innovations for increased
performance, while preserving compatibility for applications running under the
virtual machine.
Contact Us
Email questions and inquiries to:
[email protected]