processor emulation

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

processor emulation

Jecel Assumpcao Jr
 
I just found out about this project:

https://github.com/guillep/pharo-unicorn

It seems to offer similar functionality as Bochs but can simulate other
processors such as ARM or MIPS. Could this be an alternative for Cog?

-- Jecel
Reply | Threaded
Open this post in threaded view
|

Re: processor emulation

Eliot Miranda-2
 


On Sun, Oct 18, 2020 at 6:19 PM Jecel Assumpcao Jr <[hidden email]> wrote:
 
I just found out about this project:

https://github.com/guillep/pharo-unicorn

It seems to offer similar functionality as Bochs but can simulate other
processors such as ARM or MIPS. Could this be an alternative for Cog?

This looks much more like Pharo trying to strike out on its own.

-- Jecel


--
_,,,^..^,,,_
best, Eliot
Reply | Threaded
Open this post in threaded view
|

Re: processor emulation

Jecel Assumpcao Jr
 
Eliot,

> This looks much more like Pharo trying to strike out on its own.

I was talking more about the Unicorn project itself, which borrows code
from Qemu but as a usable library for just the CPU. I noticed Pharo in
the list of languages with Unicorn bindings and found the link with an
example of what it would look like in Smalltalk.

The issue is that now we have 3 very different solutions for x86, ARM
and MIPS. So I was wondering if a single solution wouldn't be better?

-- Jecel
Reply | Threaded
Open this post in threaded view
|

Re: processor emulation

Ron Teitelbaum
 
GPL

All the best,

Ron

On Sun, Oct 18, 2020 at 10:09 PM Jecel Assumpcao Jr <[hidden email]> wrote:
 
Eliot,

> This looks much more like Pharo trying to strike out on its own.

I was talking more about the Unicorn project itself, which borrows code
from Qemu but as a usable library for just the CPU. I noticed Pharo in
the list of languages with Unicorn bindings and found the link with an
example of what it would look like in Smalltalk.

The issue is that now we have 3 very different solutions for x86, ARM
and MIPS. So I was wondering if a single solution wouldn't be better?

-- Jecel
Reply | Threaded
Open this post in threaded view
|

Re: processor emulation

Eliot Miranda-2
In reply to this post by Jecel Assumpcao Jr
 
Hi Jecel,

> On Oct 18, 2020, at 7:10 PM, Jecel Assumpcao Jr <[hidden email]> wrote:
>
> 
> Eliot,
>
>> This looks much more like Pharo trying to strike out on its own.
>
> I was talking more about the Unicorn project itself, which borrows code
> from Qemu but as a usable library for just the CPU. I noticed Pharo in
> the list of languages with Unicorn bindings and found the link with an
> example of what it would look like in Smalltalk.
>
> The issue is that now we have 3 very different solutions for x86, ARM
> and MIPS. So I was wondering if a single solution wouldn't be better?

Well given that two of the solutions work fine and that Boris Shingarov is investigating using the Gem5 simulators, trying to unify has no point.  It’s just work.  But if it excites you, go for it.  I don’t have spare cycles :-)

>
> -- Jecel
Reply | Threaded
Open this post in threaded view
|

Re: processor emulation

Jecel Assumpcao Jr
 
Eliot

> Well given that two of the solutions work fine and
> that Boris Shingarov is investigating using the Gem5
> simulators, trying to unify has no point.

Gem5 would indeed be a better solution given that we don't need real
time emulation for debugging the compilers. I had forgotten about that
project in this context.

>  It?s just work.  But if it excites you, go for it.  I don?t
> have spare cycles :-)

I am going in a slightly different direction.

-- Jecel
Reply | Threaded
Open this post in threaded view
|

Re: processor emulation, and Status of PowerPC

Boris Shingarov
In reply to this post by Eliot Miranda-2
 

>  
>
> Well given that two of the solutions work fine and that Boris Shingarov is investigating using the Gem5 simulators, trying to unify has no point.  It’s just work.  But if it excites you, go for it.  I don’t have spare cycles :-)

Alright, now that my name got mentioned in this discussion, I'll chime
in to explain where we are with that project.

The idea is to use the widely-adopted GDB interfaces to drive the
debugging of the VM on a wide range of targets, so that the difference
between Simulation and Production mode is erased. Indeed I have booted
up Cog interchangeably on purely-software-emulated CPU, on hard-silicon,
and on FPGA, completely transparently to Cog and the VMSimulator.

More interestingly, the Smalltalk API to the underlying GDB is designed
to admit also other backends, such as the Angr symbolic execution
engine.  This will server as the basis of Cog's formal verification
(although I have not yet booted full Cog symbolically, only small
fragments).

What works today?  We have been running simulations of existing i386 and
ARM Cog both on gem5 and on off-the-shelf hardware for several months,
both in Squeak and Pharo host images (the code for both environments is
publicly available).

The all-new PowerPC backend successfully boots to the Reader prompt. 
The code is available at

https://github.com/shingarov/opensmalltalk-vm

https://github.com/shingarov/SmallRSP

https://github.com/shingarov/Pharo-ArchC

https://github.com/shingarov/MachineArithmetic

Setting it up is highly nontrivial, but not a
"kids-please-don't-try-this-at-home" kind of deal.  On the contrary, I
invite everyone interested and I am willing to show you how to run it.

This is obviously a very long way from being usable for actual Smalltalk
app development by customers; if there is interest, we can talk about
what the next steps need to be.