Polymorph Virtual Machine System and Support
I am however aware there is similar projects to it already existing... but there is a definite
quirk to polymorph in that each "JIT" translation when cached would actually allow three
1: *multiple*reversible* translation... pre-parsed or JIT cache based, even Interpretive,
any form of "native code"(x86/amd64/PPC/ARM/Java/...) is able to be treated as another
2: mixed Hardware/Software Systemic Emulations,
I can Emulate another or the same OS within fake hardware quite readily...
3: *Transferrable* Program caching, anything inside the framework can be relocated
*during* runtime operation to another host.
I need to experiment with making feature #3 fully capable... but this is the end-goal...
How many of you would like to be able to run a WHDLoad or original Classic Game
and "drag it across" from UAE to a real machine to run by simply "pause"ing the game?
the core Polymorph.Library doesn't know what it is Emulating and provides all the
required support routines and resource tracking needed,
the "loader" programs (Wine is an example here)...
would be used as a Default tool for each non-native program to be run,
the limitation here is any settings will require to be entered as tooltypes.
I am more than well aware of how this might be taken wrongly...
but any "PATH" or other Environment variables will be Application specific when
set in a given Icon using the tooltypes
I'll walk through a hypothetical example...lets run a Windows Application...
the "default PATH" would be the "PROGDIR:" for the loader, then the folder the songbird.exe is opened from...
But if there is a "PATH=" tooltype in the Icon for SongBird.exe ... this will override
with the songbird.exe location and loader folders being added last.
native DLL's for songbird.exe would then be put with it, You will get messages as to
which libraries are needed here making things easier.
Double-Click songbird.exe to start...
the loader will ask polymorph.library for a "Virtual Machine Instance" and begin "loading" the songbird.exe into the Memory it is adding to that...
ALL memory outside the VMI Map will be considered as read-only/forbidden until mapped
either as data or code accessible
(code access is readable/executable, data is write enabled but is not executable)
Now there is a lot of detail I skipped in the above...
CPU / Memory / OS settings for a start, the loader will know what these are and
will provide the appropriate IDs to Polymorph at load time for it to find
whether an Interpreter, Emulation or Simulation module is needed.
Each of the modules will use the support routines to be certain of resource tracking.
Functionality present in the Host OS (AmigaOS4.x or AROS) will directly replace
the equal function in the target environment.
This involves some sleight of hand trickery... the songbird.exe in our example
is aware of running on a Windows 32bit Environment... but when you use the requester
to open a file... the native asl.library will show up...
this may seem wrong to some people (replacing commdlg.dll with asl.library) but it is
how "wine" works for Linux as well... I am simply providing a similar "fake" commdlg
dll that is a front-end for asl.library so that the program works without any weirdness
Things are weird enough that the machine is actively schizophrenic by design :)
Another example... the proverbial "WHDLoad" of an older Classic Game or Demonstration,
an updated WHDLoad would be usable... however this would actually load and run
a somewhat limited "hardware" simulation.
the 68000 instruction set however will be translated and certain operations such as "Blitting" will need to be handled as well...
Maybe a modified [E/P-]UAE where the OS is "faked" with a Kickstart replacement that
only works on top of an AOS4.x or AROS environment... (a Fakestart ?)
Such a system would be definitely limited at first.
Another target setup for polymorph would actually be Java... though I am not 100% as to
how functional I would be able to make things happen for handling GUI code.
However ignoring Java and Windows entirely...
would running AROS programs on AmigaOS4.x unchanged or even allowing for any
architecture of AROS to run programs from any other architecture be a good feature?
I have not touched on details on how I plan to make any of this happen and I won't
really get into such details on the blog so readily...
AbH Belxjander Draconis SerechaiSubmitted by Belxjander on Sun, 2011-12-25 11:02