<br><br><div class="gmail_quote">On Thu, Feb 12, 2009 at 11:25 AM, Bert Freudenberg <span dir="ltr">&lt;<a href="mailto:bert@freudenbergs.de">bert@freudenbergs.de</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="Ih2E3d"><br>
<br>
On 12.02.2009, at 19:29, Eliot Miranda wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Um, I have (studied my Agrippa), and I quote:<br>
<br>
Does my 64-bit VM run both 32-bit and 64-bit images? No. Any VM will run either 32-bit or 64-bit images<br>
</blockquote>
<br></div>
Read it like this:<div class="Ih2E3d"><br>
<br>
Does my 64-bit VM run *both* 32-bit and 64-bit images? No. Any VM will run *either* 32-bit *or* 64-bit images<br>
<br>
</div><div class="Ih2E3d"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Apologies for being so persistent :)<br>
</blockquote>
<br></div>
Well everyone has a thick day once in a while.<div class="Ih2E3d"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<a href="http://squeakvm.org/squeak64/faq.html" target="_blank">http://squeakvm.org/squeak64/faq.html</a><br>
</blockquote>
<br></div>
You still fail to see the crucial distinction the FAQ makes between 64-bit *images* and 64-bit *VMs*:<br>
<br>
What is a 64-bit image?<br>
A 64-bit image is an image in which the object memory uses a 64-bit word size for object pointers<br>
<br>
What is a 64-bit VM?<br>
A 64-bit VM is one which is compiled with the LP64 or ILP64 data model. This means, in C terms, that pointers and longs are 64-bits wide.<br>
<br>
These two are independent. There are four kinds of VMs:<br>
<br>
1) a 32-bit VM compiled to run 32-bit images<br>
2) a 32-bit VM compiled to run 64-bit images<br>
3) a 64-bit VM compiled to run 32-bit images<br>
4) a 64-bit VM compiled to run 64-bit images<br>
<br>
Wether the VM can run 32 or 64 bit *images* is governed by the checkbox in VMMaker.<br>
Wether the VM can run on a 32 or 64 bit host is governed by the C compiler.<br>
<br>
Also, nobody uses 64 bit images yet.<br>
<br>
Please suggest how the FAQ could make this more clear (assuming you actually studied the whole thing and not just skimmed it).</blockquote><div><br></div><div>Speaking through a self-imposed gag let me suggest the FAQ distinguish clearly between a 64-bit VM (meaning a VM that runs 64-bit images that necessarly is compiled as a 64-bit executable) and a 32-bit VM compiled to run as a 64-bit executable. &nbsp;The latter doesn&#39;t count as a 64-bit VM for me. &nbsp;64-bit clean perhaps.</div>
<div><br></div><div>Let me further suggest that 2) is pointless, in that it can&#39;t scale beyond the 32-bit address space but uses about 1.5 times the space of a 32-bit image as it tries to do so. &nbsp;i.e. it&#39;ll fail a lot earlier than a 32-bit image. &nbsp;Further, if a 64-bit image is larger than will fit in a 32-bit address space one *cant* run it on 2 because it won&#39;t fit. &nbsp;However, one can derive a 32-bit image from a 64-bit image that isn&#39;t too big using the SystemTracer (don&#39;t know if tis has been implemented; we only implemented 32-bit to 64-bit conversion in VsualWorks, uing something akin to the system tracer).</div>
<div><br></div><div>So I would suggest the FAQ explain tat there are really three different VMs, two 32-bit ones and one 64-bit one. &nbsp;One of the 32-bit VMs is compiled to run as a 64-bit executable on 64-bit systems but only runs a 32-bit image. &nbsp;That at least accords with the planet I grew up on :)</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><br><font color="#888888">
<br>
- Bert -<br>
<br>
<br>
</font></blockquote></div><br>