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]
 
 
 
 

SourceForge Logo