[Vm-dev] 64bit: "This interpreter (vers. 68000) cannot read image
file (vers. 274877913446)."
David T. Lewis
lewis at mail.msen.com
Wed Oct 17 00:31:57 UTC 2007
On Tue, Oct 16, 2007 at 01:04:45PM +0200, Andrew Gaylard wrote:
> On 10/16/07, Bert Freudenberg <bert at freudenbergs.de> wrote:
> > Anyway, writing this up for future reference is needed, thanks for
> > doing this. One thing you should watch out for though is to
> > distinguish between a 64 bit VM and a 64 bit image, which are
> > independent.
> Ah. Yes. Good that you pointed this out. So would it be correct to
> say "a 64-bit VM is needed only if you have an architecture which
> can't run 32-bit apps, or if you have a need for an enormous number
> of objects, in which case you'll also need a 64-bit image"?
To clarify some terminology:
When Ian and Dan did the 64 bit port, they used the term "64 bit image" to
refer to an image in which all of the object pointers had been converted
from 32 bit values to 64 bit values, and the term "64 bit host" to refer
to a platform with 64 bit machine pointer size. Any combination of 32/64
bit host and 32/64 bit image is possible, but note that all currently
available Squeak images are still in 32 bit format.
So for the FAQ:
- What is a 32 bit image?
A 32 bit image is an image in which the object memory uses a 32 bit word
size for object pointers. The format of object memory and object pointers
is defined in class ObjectMemory (see the class comment for a basic
explanation). As of this writing, all Squeak images of practical interest
are 32 bit images.
- What is a 64 bit VM?
A 64 bit image is an image in which the object memory uses 64 bit word
size for object pointers. Squeak now supports a 64 bit image format that
is sufficient to produce a working system, but which is intentionally
simple, and is expected to be modified and extended to take advantage of
additional 64 bit capabilities in the future.
- Can I run a 32 bit image on my 64 bit computer?
Yes. A 32 bit image can be run on either a 32 bit VM or a 64 bit VM. Some
computer platforms (e.g. 64 bit Linux) can run both the 32 bit VM and
64 bit VM on the same system.
- Can I run a 64 bit image on my 32 bit computer?
Yes. If you build a VM with the "64 bit VM?" check box selected, you will
create a VM that runs 64 bit images. This will work on 32 bit host systems
as well as on 64 bit host systems.
- Can a single VM run both 32 bit and 64 bit images?
No. For any given computer platform, two different VMs are required to
run 32 bit and 64 bit images. The type of VM that you build is governed
by the "64 bit VM?" check box in VMMaker, and is independent of the
word size of your computer. (Note: While it would be possible to create
a VM that is "smart" enough to run both 32 bit and 64 bit images, this
is currently of little practical value due to Squeak's reliance on
plugins that are linked to 32 bit or 64 external library code.)
- I have a 64 bit computer, should I use a 64 bit VM to run my 32 bit Squeak images?
It depends. Either one will work, but if your image depends on plugins that
are only available for 32 bit systems, use the 32 bit VM. Otherwise, if
you are building your own VM, go ahead and use the 64 bit version.
- Where can I find a 64 bit image?
These are scarce. The original 64 bit port project (from Ian and Dan) includes
a 64 bit image that worked with the VM distributed at that time. A current VM
cannot execute the original 64 bit image due to changes in the interpreter
since that time. It is possible to update that original image using a modified
VM, and the resulting image is executable using a current unmodified VM. However,
there are no official or supported releases of 64 bit images at this time.
- How can I make a 64 bit image from a 32 bit image?
Use the SystemTracer (SystemTracerV2 on SqueakMap). The original 64 bit Squeak
image was created using this tool, and a sufficiently motivated person should
be able to reproduce the job. However, the SystemTracer does not currently work
on little-endian computers (including Intel), so some work should be expected
in order to enhance SystemTracer before a successful conversion will be possible.
More information about the Vm-dev