Dave,<br><br>Thanks for the excellent feedback.<br><br>On 10/17/07, <b class="gmail_sendername">David T. Lewis</b> <<a href="mailto:lewis@mail.msen.com">lewis@mail.msen.com</a>> 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, did you mean this question to be<br>"What is a 64-bit image?"?<br><br>Here's a pass at answering the "what is a 64-bit VM?" question:
<br>A 64-bit VM is one which is compiled with the LP64 or ILP64 data<br>model. 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>"bi-arch". However, some (such as the Alpha) can only run 64-bit<br>applications. For bi-arch systems, you can choose whether to run<br>
a 32-bit or 64-bit VM. For 64-bit-only systems, you can only run a<br>64-bit VM, since there'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 "64 bit VM?" 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'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'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. They are aligned<br>on 8-byte boundaries.<br>Integers are still implemented as tagged 31-bit values. 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. Anyone?)<br><br>Andrew