<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, Oct 12, 2013 at 12:54 AM, Clément Bera <span dir="ltr">&lt;<a href="mailto:bera.clement@gmail.com" target="_blank">bera.clement@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <br><div dir="ltr">Hello,<div><br></div><div>If I understand correctly now you have a working StackInterpreter with a Spur image. I wonder, as Spur is both compatible for 32 and 64 bits, how far are we from a Stack VM with a 64 bits image ? It shouldn&#39;t be so much work. I&#39;m not talking about the JIT of course.<br>
</div></div></blockquote><div><br></div><div>Right, that&#39;s the idea.  Keep as much in common between 64- and 32-bits as possible.  I hope that it will be two to three months work to get a StackInterpreter.  I&#39;m guessing that an IA64/x86-64 code generator would be about the same too.  There are complications around implementing 64-bit immediate floats, and modifying the image to support e.g. SmallFloat.</div>
<div><br></div><div>Also there are real problem areas I&#39;m ignoring for now such as image segments.  We may need them but they won&#39;t be compatible.  IME, it&#39;s better to impleent these things in Smalltalk, but the image segment implementation is rather clever.  In any case, addressing these problem areas (can anyone think of others that need to go on the list?) will take time, but shouldn&#39;t prevent us achieving a workable system first.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Another question in the same direction, I saw on the Bochs website that their simulator now also supports 64 bits. </div>
</div></blockquote><div><br></div><div>Right.  That was the case when I chose it.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">
<div>Do you think if someone try to port Cog on 64bits he should try to use Bochs in 64 bits mode with the same plugin as we have, or he should do another plugin for another simulator ?<br></div></div></blockquote><div><br>
</div><div>Well, one needs to build a new plugin, but yes, it should use Bochs.  It would be called BochsIA64Plugin.  Look at</div><div>    <a href="http://www.squeakvm.org/svn/squeak/branches/Cog/processors/IA32/bochs/README.COG">http://www.squeakvm.org/svn/squeak/branches/Cog/processors/IA32/bochs/README.COG</a><br>
</div>    <a href="http://www.squeakvm.org/svn/squeak/branches/Cog/processors/IA32/linuxbochs/conf.COG">http://www.squeakvm.org/svn/squeak/branches/Cog/processors/IA32/linuxbochs/conf.COG</a><div>    <a href="http://www.squeakvm.org/svn/squeak/branches/Cog/processors/IA32/macbochs/conf.COG">http://www.squeakvm.org/svn/squeak/branches/Cog/processors/IA32/macbochs/conf.COG</a></div>
    <a href="http://www.squeakvm.org/svn/squeak/branches/Cog/processors/IA32/winbochs/conf.COG">http://www.squeakvm.org/svn/squeak/branches/Cog/processors/IA32/winbochs/conf.COG</a><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div></div>

<div>Anyway I&#39;m amazed by the speed at which you implement Spur :).<br></div></div></blockquote><div><br></div><div>I&#39;ve sort-of done it before :-).  The design is very similar to the 64-bit VisualWorks system I designed and implemented in 2005/2006 (IIRC).  That was in C.  But working in Smalltalk with VMMaker/Slang I am *much* more productive.  So having a second go + using Smalltalk results in good velocity.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div></div></div><div class="gmail_extra">2013/10/12  <span dir="ltr">&lt;<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>&gt;</span><br>
<div class="gmail_quote">

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:<br>
<a href="http://source.squeak.org/VMMaker/VMMaker.oscog-eem.453.mcz" target="_blank">http://source.squeak.org/VMMaker/VMMaker.oscog-eem.453.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: VMMaker.oscog-eem.453<br>
Author: eem<br>
Time: 11 October 2013, 5:19:39.495 pm<br>
UUID: 1510990d-a971-41cc-8a66-bc65a160454a<br>
Ancestors: VMMaker.oscog-eem.452<br>
<br>
Oops.  Some stragglers.   Now gcc3x-interp.c is generated for<br>
StackInterpreter + Spur.<br>
<br>
=============== Diff against VMMaker.oscog-eem.452 ===============<br>
<br>
Item was added:<br>
+ ----- Method: Spur32BitMMLESimulator&gt;&gt;isNonIntegerObject: (in category &#39;object testing&#39;) -----<br>
+ isNonIntegerObject: oop<br>
+       &quot;This list records the valid senders of isNonIntegerObject: as we replace uses of<br>
+         isNonIntegerObject: by isNonImmediate: where appropriate.&quot;<br>
+       (#(     on:do: &quot;from the dbeugger&quot;<br>
+               reverseDisplayFrom:to:<br>
+               primitiveObjectAtPut<br>
+               isCogMethodReference:) includes: thisContext sender method selector) ifFalse:<br>
+               [self halt].<br>
+       ^super isNonIntegerObject: oop!<br>
<br>
Item was added:<br>
+ ----- Method: SpurMemoryManager class&gt;&gt;additionalHeadersDo: (in category &#39;translation&#39;) -----<br>
+ additionalHeadersDo: aBinaryBlock<br>
+       &quot;Evaluate aBinaryBlock with the names and contents of<br>
+        any additional header files that need to be generated.&quot;!<br>
<br>
Item was changed:<br>
  ----- Method: SpurMemoryManager&gt;&gt;isNonIntegerObject: (in category &#39;object testing&#39;) -----<br>
  isNonIntegerObject: oop<br>
-       &quot;This list records the valid senders of isNonIntegerObject: as we replace uses of<br>
-         isNonIntegerObject: by isNonImmediate: where appropriate.&quot;<br>
-       (#(     on:do: &quot;from the dbeugger&quot;<br>
-               reverseDisplayFrom:to:<br>
-               primitiveObjectAtPut<br>
-               isCogMethodReference:) includes: thisContext sender method selector) ifFalse:<br>
-               [self halt].<br>
        ^(oop bitAnd: 1) = 0!<br>
<br>
</blockquote></div><br></div>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div>
</div></div>