Skip to main content

Translators, maps, conduits, and containers

The Amiga had a hardware emulator which transformed instruction to instruction to a dedicated x86 hardware interpreter in the Amiga could run Microsoft DOS spreadsheet programs in the Amiga OS.

MS-DOS on Amiga via Sidecar or Bridgeboard[edit]
MS-DOS compatibility was a major issue during the early years of the Amiga's lifespan in order to promote the machine as a serious business machine. In order to run the MS-DOS operating system, Commodore released the Sidecar for the Amiga 1000, basically a 8088 board in a closed case that connected to the side of the Amiga. Clever programming (a library named Janus, after the two-faced Roman god of doorways) made it possible to run PC software in an Amiga window without use of emulation. At the introduction of the Sidecar the crowd was stunned to see the MS-DOS version of Microsoft Flight Simulator running at full speed in an Amiga window on the Workbench.

Later the Sidecar was implemented on an expansion card named "Bridgeboard"[dead link] for Amiga 2000+ models. Bridgeboard cards appeared up to 486 processor variants. The Bridgeboard card and the Janus library made the use of PC expansion cards and harddisk/floppydisk drives possible. The bridgeboard card was manufactured by Commodore, later third party cards also appeared for the Amiga 500 and Amiga 600 expansion slot such as the KCS Powerboard.

Eventually, full-software emulators, such as PC-Task and PCx allowed Amigas to run MS-DOS programs, including Microsoft Windows, without additional hardware, at the costs of speed and compatibility.

All modern computers now have hardware interpreters that were first introduced in the Amiga.
x86 virtualization
From Wikipedia, the free encyclopedia
In computing, x86 virtualization refers to hardware virtualization for the x86 architecture. It allows multiple operating systems to simultaneously share x86 processor resources in a safe and efficient manner.

In the late 1990s x86 virtualization was achieved by complex software techniques, necessary to compensate for the processor's lack of virtualization support while attaining reasonable performance. In 2006, both Intel (VT-x) and AMD (AMD-V) introduced limited hardware virtualization support that allowed simpler virtualization software but offered very little speed benefits.[1] Greater hardware support, which allowed substantial speed improvements, came with later processor models.

Guest operating systems running at nearly native speeds on host computers operating system, having most of the guest operations running instructions from the guest at interpreted through hardware.

Oracle VM VirtualBox
(formerly Sun VirtualBox, Sun xVM VirtualBox and Innotek VirtualBox) is a free and open-source hypervisor for x86 computers currently being developed by Oracle Corporation. Developed initially by Innotek GmbH, it was acquired by Sun Microsystems in 2008 which was in turn acquired by Oracle in 2010.

VirtualBox may be installed on a number of host operating systems, including: Linux, OS X, Windows, Solaris, and OpenSolaris. There are also ports to FreeBSD[4] and Genode.[5]

It supports the creation and management of guest virtual machines running versions and derivations of Windows, Linux, BSD, OS/2, Solaris, Haiku, OSx86 and others,[6] and limited virtualization of OS X guests on Apple hardware.[7][8]

For some guest operating systems, a "Guest Additions" package of device drivers and system applications is available[9][10] which typically improves performance, especially of graphics.[11]

If you want to run whichever software you want on your own hardware all you want is an interpreter. Transmeta made a computer that was only a hardware interpreter any system's instructions to the host.

Transmeta Corporation was an American fabless semiconductor company based in Santa Clara, California. It developed low power x86 compatible microprocessors based on a VLIW core and a software layer called Code Morphing Software.

Code Morphing Software consisted of an interpreter, a runtime system and a dynamic binary translator. x86 instructions were first interpreted one instruction at a time and profiled, then depending upon the frequency of execution of a code block, CMS would progressively generate more optimized translations.[3][4][5]

The VLIW core implemented features specifically designed to accelerate CMS and translations. Among the features were support for general speculation, detection of memory aliasing and detection of self modifying x86 code.[3][4][5]

The ability to make computers that could use any computers API codes was fought and won against SCO Linux, a partial battle of SCO against Linux.
Linus Corrects McKusick

Tuesday, December 30 2003 @ 12:38 AM EST

Kirk McKusick is quoted as saying some odd things on Newsforge. I say he is quoted as saying them, because I have noted that reporters sometimes write whatever they want to, regardless of what you told them. It has happened to me. Nevertheless, McKusick appears to be wrong on his facts, judging from the quotations, and therefore his reported conclusions must also be wrong.
First, what he said, and then what Linus told Groklaw in reply.

McKusick said, in part:

"Linus Torvolds [sic] says that he typed in these files from scratch and I believe that he did. Unfortunately that does not get him out of the ABI argument, because, by necessity, he had to use the same names and values."
But Linus didn't use the same names and values. He used the Minix names and values.

How do I know? I asked Linus.

Duh. Strange the Newsforge reporter didn't seem to think of that.

Anyway, here is what Linus had to say about McKusick's remarks:

"The names are standardized. I used the values in Minix for the original ones, the rest of the numbers are just from whatever random ordering of the names was in libc at the time (they don't match anything that I know of)

"Btw, somebody pointed out that if SCO thinks they own the numbering sequence of 'errno' (never mind that the x86 numbering isn't even the same they use), then by the same logic I own the copyright on the numbering sequence of the Linux system calls, which SCO uses in their linux kernel module stuff.

"Just showing how absurd the claim is..

"(Now, it's entirely possible that their Linux kernel module stuff actually contains copied code too, but that's a different issue)."

Groklaw chronicled that copyright law for software is also protected speech.
Groklaw was a website that covered legal news of interest to the free and open source software community. Started as a law blog on May 16, 2003 by paralegal Pamela Jones ("PJ"), it covered issues such as the SCO-Linux lawsuits, the EU anti-trust case against Microsoft, and the standardization of Office Open XML.

Jones described Groklaw as ..."a place where lawyers and geeks could explain things to each other and work together, so they'd understand each other's work better." [2]

Its name derives from "grok", roughly meaning "to understand completely", which had previously entered geek slang.

Other topics covered included software patents, DMCA, the actions of the RIAA against alleged illegal file sharers, and actions against free and open software such as Android and Linux. Almost every article also attracted an "Off Topic" thread, where a diverse range of topics was discussed.

Now that software instructions have hardware instruction interpreters both linux and windows, guest images run at native speed in a container on a host machine.

What is Docker

Docker is the world’s leading software container platform. Developers use Docker to eliminate “works on my machine” problems when collaborating on code with co-workers. Operators use Docker to run and manage apps side-by-side in isolated containers to get better compute density. Enterprises use Docker to build agile software delivery pipelines to ship new features faster, more securely and with confidence for both Linux and Windows Server apps.

The GCC compiler can compile all supported languages to a platform independent language called CIL, Common Intermediate Language, and this code CIL code can be contained in a CLI, Common Language interpreter.
All operating systems that support GCC can run CLI programs if they are compatible and compilable with the GCC compiler.

CLI is a framework that defines a platform independent format for executables and a run-time environment for the execution of applications. The framework has been been standardized by the European Computer Manufacturers Association (ECMA-335) and by the International Organization for Standardization (ISO/IEC 23271:2006). CLI executables are encoded in the Common Intermediate Language (CIL), a stack-based bytecode language. CLI framework is designed to support several programming languages with different abstraction levels, from object-oriented managed languages to low-level languages with no managed execution at all.

Google has a plugin called NativeClient that allows x86 instructions to run natively on the host operating system, they've made their own CIL and CLI in their NativeClient.
Google Native Client (NaCl) is a sandboxing technology for running a subset of Intel x86, ARM, or MIPS native code in a sandbox. It allows safely running native code from a web browser, independent of the user operating system, allowing web-based applications to run at near-native speeds, which aligns with Google's plans for Chrome OS. It may also be used for securing browser plugins, and parts of other applications or full applications[3] such as ZeroVM.[4]

To demonstrate the readiness of the technology, on 9 December 2011, Google announced the availability of several new Chrome-only versions of games known for their rich and processor-intensive graphics, including Bastion (no longer supported on the Chrome Web Store). NaCl runs hardware-accelerated 3D graphics (via OpenGL ES 2.0), sandboxed local file storage, dynamic loading, full screen mode, and mouse capture. There are also plans to make NaCl available on handheld devices.[5][6]

Portable Native Client (PNaCl) is an architecture-independent version. PNaCl apps are compiled ahead-of-time. PNaCl is recommended over NaCl for most use cases.[7] The general concept of NaCl (running native code in web browser) has been implemented before in ActiveX, which, while still in use, has a legacy of DLL Hell and security problems. Native Client avoids these issues by using sandboxing.

An alternative of sorts to NaCl is asm.js, which also allows applications written in C or C++ to be compiled to run in the browser (at more than half the native speed), and also supports ahead-of-time compilation, but is a subset of JavaScript and hence backwards-compatible with browsers that do not support it directly. Another alternative (while it may initially be powered by PNaCl) is WebAssembly.

On October 12, 2016, a comment on the Chromium issue tracker indicated that Google's Pepper and Native Client teams had been destaffed.[8]

asm.js A library that translates many versions of Javascript interpreters to any program that is written to the ASM.jS standard. A language like C, Go, Javascript may target the ASM.js CIL, common intermediate language and then run in the CLI, ASM.js Interpreter, common language interpreter.
Emscripten is an LLVM-based project that compiles C and C++ into highly-optimizable JavaScript in asm.js format. This lets you run C and C++ on the web at near-native speed, without plugins.

A new interpreter being created is called WebAssembly. This is going to be an interpreter that can run any program that a map can be provided for the WebAssembly interpreter to the host's native hardware instructions.
WebAssembly or wasm is an experimental efficient low-level programming language for in-browser client-side scripting, which is currently in development. Its initial aim is to support compilation from C and C++,[1] though other source languages such as Rust are also supported.[2]

Running a browser on the host as a client, running a CPU on the host (browser) as a guest container and running a guest operating system, to run on the host of the host.


Popular posts from this blog

clonezilla - creating a wifi ad-hoc hotspot and running a ssh server

Here are some notes on connecting to a wifi-hotspot from a running clonezilla

[ target machine to save a backup hard-disk clone/image ]
[ target machine is also running a wifi hotspot and an ssh server ]
Ubuntu 11.04 - Natty Narwhal

terry@terry-HP:~$ uname -a
Linux terry-HP 2.6.38-10-generic #46-Ubuntu SMP Tue Jun 28 15:07:17 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

[ Creating an 'ad-hoc' wifi spot ]
Click the 'up down arrow' icon ( or what have you )

[ choose menu item to create a wifi ad-hoc hotspot ]

[ create the ad-hoc wifi hotspot ]

[ the eth1 connection is the created ad-hoc network with an essid of 'terry' ]

[ the ad-hoc wifi hotspot is now visible on the 'host' computer and other computer as well now ]

[ enter the following on the machine being cloned with clonezilla
[ at the appropriate place in the clonezilla backup image step ]
terry@terry-HP:~$ ip link set wlan0 down
terry@terry-HP:~$ iwconfig wlan0 mode ad-hoc

Use Gwenview to upload images to

Use Gwenview to upload images to

install the following KDE4 plugins:

terry@narwhal:~/download$ sudo apt-get install kipi-plugins
From Linux Clicks...
the Gwenview application...

From Linux Clicks...