Hacker News new | past | comments | ask | show | jobs | submit login
Visual x86 emulator (thlorenz.com)
127 points by adamnemecek on June 8, 2015 | hide | past | favorite | 29 comments



Not quite as cool as the visual 6502: http://www.visual6502.org/JSSim/index.html


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.


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.


> I think it would be very helpful to put some corresponding C (or pseudo-C) code

That's not the point. All this is trying to show is how assembly and a CPU works. Understanding the program is secondary.

Additionally there is no C code for this as the assembly was written directly.


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.


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...

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.


Please file an issue on github, so I can track these problems and fix them. As I mentioned I'm color blind and could use some styling help via a pull request :)


I addressed the styling issues you pointed out @strommen. If you still have problems reading things please supply a fix via a pull request.


I mean, you could always compile some yourself. Separation of concerns and what not.


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


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.


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.


> 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.


As promised flags are now visualized.


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


> 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.



Anybody knows something like this for AVR or ARM?


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.


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...)


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


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


How do I change the code?


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.


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) -- 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).


Is this a full emulation? MMU?


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.


The site seems down?


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




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: