Dave,<br><br>Thanks for the excellent feedback.<br><br>On 10/17/07, <b class="gmail_sendername">David T. Lewis</b> &lt;<a href="mailto:lewis@mail.msen.com">lewis@mail.msen.com</a>&gt; wrote:<div><span class="gmail_quote"></span>
[snip]<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">- What is a 64 bit VM?<br>A 64 bit image is an image in which the object memory uses 64 bit word
<br>size for object pointers. Squeak now supports a 64 bit image format that<br>is sufficient to produce a working system, but which is intentionally<br>simple, and is expected to be modified and extended to take advantage of
<br>additional 64 bit capabilities in the future.</blockquote><div><br>Considering the answer you gave,&nbsp; did you mean this question to be<br>&quot;What is a 64-bit image?&quot;?<br><br>Here&#39;s a pass at answering the &quot;what is a 64-bit VM?&quot; question:
<br>A 64-bit VM is one which is compiled with the LP64 or ILP64 data<br>model.&nbsp; This means, in C terms, that pointers and longs are 64 bits<br>wide.<br><br>- Can I run a 32- or 64-bit VM on my computer?<br>Some current architectures (such as the x86-64 and the UltraSPARC)
<br>can run 32-bit as well as 64-bit applications; these are known as<br>&quot;bi-arch&quot;.&nbsp; However, some (such as the Alpha) can only run 64-bit<br>applications.&nbsp; For bi-arch systems, you can choose whether to run<br>
a 32-bit or 64-bit VM.&nbsp; For 64-bit-only systems, you can only run a<br>64-bit VM, since there&#39;s no way of compiling a 32-bit application.<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
- Can I run a 32 bit image on my 64 bit computer?<br>Yes. A 32 bit image can be run on either a 32 bit VM or a 64 bit VM. Some<br>computer platforms (e.g. 64 bit Linux) can run both the 32 bit VM and<br>64 bit VM on the same system.
<br><br>- Can I run a 64 bit image on my 32 bit computer?<br>Yes. If you build a VM with the &quot;64 bit VM?&quot; check box selected, you will<br>create a VM that runs 64 bit images. This will work on 32 bit host systems
<br>as well as on 64 bit host systems.</blockquote><div><br>- How does a 32-bit VM manage to run a 64-bit image if pointers are 32-bits?<br>(I&#39;m guessing here!)<br>It relies on the image size being smaller than 4GB. Code in the VM
<br>converts the 64-bit object pointers to 32-bit ones that the VM can use.<br><br></div></div>- What sizes and alignment does the new 64-bit image format use for<br>pointers and integers?<br>(Again, I&#39;m guessing here)
<br>In the 64-bit image format, object pointers are 64-bits wide, allowing for<br>memory up to 2^64 bytes to be directly addressable.&nbsp; They are aligned<br>on 8-byte boundaries.<br>Integers are still implemented as tagged 31-bit values.&nbsp; They are aligned
<br>to 4-byte boundaries.<br>These alignments were chosen as most 64-bit CPUs require them.<br><br>- how do I tell if a given image file is 32-bit or 64-bit?<br>(No idea.&nbsp; Anyone?)<br><br>Andrew