The original meaning of virtualmachine, sometimes called a hardware virtualmachine, is that of a number of discrete identical execution environments on a single computer, each of which runs an operating system.
Because versions of the virtualmachine are written for various computer platforms, any application written for the virtualmachine can be operated on any of the platforms, instead of having to produce separate versions of the application for each computer and operating system.
Virtualmachines can also perform the role of an emulator, allowing software applications and operating systems written for another computer processor architecture to be run.
In computer science, a stack machine is a model of computation in which the computer's memory takes the form of one or more stacks.
A two-stack machine, on the other hand, can emulate a Turing machine (by using one stack for the tape portion to the left of the TM's current head position and the other stack for the right).
Machines with a stack-based instruction set can have one or more stacks. The vast majority of stack machines are two-stack machines.
Since the majority of modern stack machines have their roots in the Forth programming language, an introduction to the terms of this language is in order.
This is because the primitives of the Forth language are defined at a very low level, and correspond to the machine code operations that would have to be present in any stack machine.
Thus, a machine that is advertised as a "Forthmachine" is usually suitable for running other languages as well.
Because virtualmachines have to be mapped on to the widest range of hardware possible, they have to make as few assumptions as they can (such as number of CPU registers in particular).
Forth was developed over several years around 1970, by Charles Moore, for controlling telescopes (it was intended to be a fourth generation language, but one computer he used (the IBM 1130) only accepted five character identifiers, so it became "Forth").
Forth also allows a word to be deleted with the "forget" word, normally only used for interactive Forth development (the language INTERCAL also includes a FORGET statement, but it is used for more evil purposes).
I find the contemptuous attitude toward Forth that is common among C programmers especially disconcerting, because the two languages are virtually contemporary, were designed with many of the same objectives, and require much the same sort of approach when solving a particular programming problem.
Forth was invented by Charles Moore, a freelance programmer who had worked on control and data acquisition applications in environments ranging from a carpet factory to the Stanford Linear Accelerator Center.
Forth development systems are available for nearly every CPU in existence, and Forth is consistently the first third-party high level language to appear on a new CPU architecture, personal computer, or operating system.
Forth is so simple that the virtualmachine, the compiler, or any part of the system is easily understood.
Forth is not as well known or widely used as 'C', more things are published in 'C', it is widely used in universities, and there are more jobs in 'C'.
Since the machine CODE words in Forth, that operate on the Forthvirtualmachine, are made of multiple machine language instructions a Forth word might take 10 instructions of 10 cycles each or 100 machine cycles.
A virtualmachine, sense 1, is an abstraction that defines a ComputingModel?
A virtualmachine, sense 2, is also an implementation, done over another virtualmachine, sense 2, or directly into hardware, of a virtualmachine, sense 1.
The virtualmachine was therefore a generic RISC engine for which we defined intermediate code (like that of a portable compiler).
Forth provides a natural means of communication between man and the smart machines he is surrounding himself with.
Forth is a very different approach to computers, so different that everyone, from newcomers to old hands, learns Forth best from the ground up.
Forth has been known to cut program development time by a factor of ten for equivalent assembly-language programming and by a factor of two for equivalent high-level programming in C or Java.
In the Javavirtualmachine specification, the behavior of a virtualmachine instance is described in terms of subsystems, memory areas, data types, and instructions.
The virtualmachine itself is responsible for deciding whether and when to free memory occupied by objects that are no longer referenced by the running application.
When the adaptive optimizing virtualmachine decides that a particular method is in the hot spot, it fires off a background thread that compiles those bytecodes to native and heavily optimizes the native code.
Initially machines only had one (which all operations implicitly refered to), but later multiple accumulators were sometimes used.
Originally designed for wordprocessor systems, changes to reduce cost included eliminating the caches and Harvard architecture (but adding 40 bit virtual memory), reducing registers to sixteen, variable length (16/32 bit) instructions (to increase instruction density), and floating point support via an adaptor to an NS32081 FPU (later, a 68881 or 68882 were available).
One other thing about the JavaVirtualMachine is that some versions need to run code of unknown reliability which has been transferred over networks, and so includes security features to prevent a program from unauthorised access to the computer that it's running on.
If you are interested in performance, the virtualmachine approach is the way to go (because fetching and decoding is simpler, and therefore faster).
If you are not interested in performance (yet), you still may want to consider the virtualmachine approach, because it often is as simple as the others.
The {\em dynamic method} is based on having, for every possible state of the cache, one specialized version of the whole interpreter; the execution of an instruction usually changes the state of the cache and the next instruction is executed in the version corresponding to the new state.
A Forth program, after parsing, is nothing but a list of words, executed consecutively by the "inner interpreter", the core of Forth.
Forth is fully reflective and self-containing; the Forth parser (the so-called "outer interpreter") is written in Forth and can be modified at any time.
More generally, Forth is a very low-level language, with manual management of memory, fixed-size buffers, pointer manipulation; but reflection makes it a remarkably powerful language among low-level languages.
A Forth compiler is a one pass compiler with a name and code dictionary that parses source code and generates either native code or code for a VirtualMachine
Forth uses two stacks, parameter and return stacks so that one doesn't have to mix addressable arrays and stack frames with actual stacks.
Forth should treat a stack as a stack since that was the idea from the beginning and what works nicely when you have more than one stack.
www.ultratechnology.com /mfp21.htm (2885 words)
Stack Computers: Chapter 3 -- Multiple Stack, 0-Operand Machines(Site not responding. Last check: 2007-10-25)
This two-stack machine will serve as a point of departure for discussions of real stack machines in subsequent chapters.
Forth is an unconventional programming language which uses a two-stack model of computation and strongly encourages frequent calls to many small procedures.
Many ML0 and MS0 designs have their roots in the Forth language, and are well suited to execution of Forth programs.
Misty Beach Forth - Written in Java, so its interpreter can be embedded in a WWW HTML page and launched as an applet, to show that almost any programming language can be implemented in Java and not suffer unacceptable performance losses; documentation, downloads as a ForthJava applet.
Forthvirtualmachine; standalone total software environment; traditional Forth features: compactness, flexibility, speed; many extensions with source code; unusual smoothness, support.
Forth development environment for embedded computer PROMs, for use with TDS2020; DOS and Windows versions; causes PC to emulate a terminal, source code displays in multiple windows, is passed to serial link.
Editors and Editing Technique: A Review of Fancy and Practical Features in the Evolution of the MMSFORTH Screen Editor, a 1985 Rochester Forth Conference presentation by A. Richard and Jill Miller of MMS.
THINKING FORTH, by Leo Brodie, is a top-notch book on strategy, and is our top recommendation for the second book, after you bought a textbook to learn the Forth words.
This one teaches you which words to select when, how to hone your habits for better Forth (and other) programming, etc. Unfortunately, the Forth Interest Group has upped the price of its second edition (which used to sell for $20) to $35 and MMS no longer stocks it.
www.millermicro.com /mmsforth.html (1187 words)
Embroidery - See Complete Guide To Embroidery - Machine Embroidery Software(Site not responding. Last check: 2007-10-25)
With ElectraSoft Fax Software, you no longer need a fax machine. Your computer and built in fax modem become your fax machine, sending faxes and receiving faxes in the background, while you are using other software in the foreground.
Buying used machine tool or selling machines, offers to find the machine for you or a buyer. Simple contact form with wide selection of machine tools from conventional to CNC machines. UK based.
PVM (Parallel VirtualMachine) is a software package that permits a heterogeneous collection of Unix and/or Windows computers hooked together by a network to be used as a single large parallel computer. The site includes news, downloads, documentation, and piles of related software and information.
A Virtual Encyclopedia of all major language learning links, Web dictionaries and Computer-Assisted Language Learning organizations in the world.
A young artist paints a different picture than the world laid forth by his father--only to later dream of impossible sandcastle dreams...Amazon says Five Stars.
Reviews, excerpts, and downloadable books for children which demonstrate and encourage good language usage -- from Abacus Educational Services, publishers of vocabulary, writing style, and grammar resources for verbal and written English improvement and exam preparation.