

Visual x86 emulator - adamnemecek
http://thlorenz.com/visulator/

======
pjc50
Not quite as cool as the visual 6502:
[http://www.visual6502.org/JSSim/index.html](http://www.visual6502.org/JSSim/index.html)

~~~
thlorenz
That's nice, thanks for the link!

Seems to serve a different purpose tough. visulator is supposed to help you
learn how a CPU processes opcodes (at an abstract level) instead of looking at
actual hardware wiring.

I'll link to it from the visulator readme though.

------
strommen
Nice work, this is really cool!

But I'm kinda missing the point. I think it would be very helpful to put some
corresponding C (or pseudo-C) code. I understand assembly, but it would take
me forever to parse out what this program does.

Also, a few design issues (on Windows 8, Chrome):

\- The bold font in the registers is difficult to read.

\- The dark colors (blue and maroon) in the register names are difficult to
read.

\- The columns of the register table don't quite line up with their headers.

~~~
pmalynin
Code is really not doing anything, it would be equivalent (in output that is)
to he following code with some sort of optimization.

unsigned short data[8] = {0, 0, 0, 0, 0, 0, 0, 0};

for(int i=0;i<8;i++) {

    
    
       data[i] += 0xff1;
    

}

for(int i=0;i<8;i++) {

    
    
       data[i] += 1;
    

}

data[0] = 0x7fff;

data[0] += 1;

data[0] += 1;

And so on.

So yea, nothing special.

~~~
thlorenz
More interesting snippets are coming once I can emulate more instructions.
These are the ones it currently can do:
[https://github.com/thlorenz/visulator/tree/master/test/fixtu...](https://github.com/thlorenz/visulator/tree/master/test/fixtures)

I agree though that a more interesting example would be nice and I'll try to
come up with one even with what it can do now.

------
eterps
It shows the register state animated. It would be much more useful if you
could see the previous register state permanently.

~~~
thlorenz
That's not a bad idea. Please file an issue on github. Ideally with a sketch
of how this would be laid out. This project is still in its infancy and I'm
very open to suggestions.

------
squidbot
This is a nifty visualizer, I'm going to show it to my daughter who I've been
teaching programming. We haven't broached registers and general CPU design
yet, but this has inspired me to do so!

It's interesting that the example shows overflow, but doesn't show the flags
register. I'm not a web dev generally, but I think I may fork this one to show
it as it exists in the emulator, it's just not rendered.

~~~
thlorenz
> but doesn't show the flags register

This is the next feature I've planned. Hopefully I can get this done tonight -
check back soon :)

It'll be visualized with LEDs that light up when a flag is set.

------
gshrikant
This is pretty neat! It is still a work-in-progress though as the Github issue
[1] notes. I'd love to be able to edit the disassembly and play with the
visualization when its done.

[1]
[https://github.com/thlorenz/visulator/issues/1](https://github.com/thlorenz/visulator/issues/1)

~~~
thlorenz
> It is still a work-in-progress though

Exactly this is just a start and I'm actively working on it. Editing the
assembly could be an option, but I also plan to allow users to load simple
binaries into it. This way you could edit the assembly, assemble it and load.

However please file an issue with feature suggestions on github so we can
track what people want.

------
timonoko
[http://en.wikipedia.org/wiki/CodeView](http://en.wikipedia.org/wiki/CodeView)

------
nsajko
Anybody knows something like this for AVR or ARM?

------
zyxley
This is neat, but the registers on the right are painfully unreadable on my
screen, with tiny text and contrasts either too dark or too bright in a way
that makes my eyes glaze over them.

~~~
thlorenz
Could you file an issue on github please? This is meant to be used on a
Desktop only. You may try to enlarge your fonts via Cmd-+ or Ctrl-+.

Also I do accept pull requests that fix some styling issues (I myself am color
blind). Just update the CSS
[here]([https://github.com/thlorenz/visulator/blob/bad27bc164c1ba173...](https://github.com/thlorenz/visulator/blob/bad27bc164c1ba173969294a27ccf3e391a620f2/web/css/index.css#L89-L100))

------
thlorenz
All who commented or whoever is interested in updates please follow #visulator
and/or @thlorenz on twitter for updates.

------
whitten
I wonder how hard it would be to modify this to a different assembly language?

------
p1esk
How do I change the code?

~~~
userbinator
That was my first thought too - "here are some example instructions, moving
the cursor around changes some registers... but I want to assemble a little
program to try it out."

I think an "emulator" that doesn't let you run your own code in it is not an
emulator. It's only an interesting visualisation.

~~~
thlorenz
As I pointed out this project is in it's infancy. I merely tweeted about
progress and it ended up here ;)

See
[status]([https://github.com/thlorenz/visulator#status](https://github.com/thlorenz/visulator#status))
-- indicating in experimental stage.

I'm planning to allow loading binaries and also editing assembly (assembling
it in the browser so the CPU emulator can run the opcodes).

------
Hydraulix989
Is this a full emulation? MMU?

~~~
thlorenz
It will emulate as much of x86 as makes sense for it's purpose , to visualize
assembly execution and how a CPU works.

It currently already contains a memory unit and supports push/pop
instructions. More memory related instructions will be added.

------
breakingcups
The site seems down?

~~~
thlorenz
It's back up, it is a github page and it seemed github had problems recently.

