4 ms·
x86-64 Playground – An online assembly editor and GDB-like debugger
- disqard 1y agoVery cool project! Thank You For Making And Sharing :)
- runetech 1y agoVery nice and approachable! Almost makes me want to come back to assembly again ;-)
- gcr 1y agoNeat site! This is a level lower than https://godbolt.org/ https://godbolt.org/ (the "Compiler Explorer") -- think of that site as turning C into assembly, and this site as watching the machine code actually run on virtual hardware.
- iamcreasy 1y agoIs that the same as x86 emulation or there are subtle distinction?
- waynesonfire 1y agogot "wut" for trying to call popcnt, oh well.
- FilosofumRex 1y agoIs there GPU assembly (PTX) version available anywhere?
- pjmlp 1y agoKind of, there is https://shader-playground.timjones.io/ https://shader-playground.timjones.io/ Additionally you can select CUDA C++ or PTX on compiler explorer.
- LarsDu88 1y agoIs there a version of this for a simpler ISA like for the 6502 chip, the Gameboy chip, or straight up ARM?
- enoent 1y agoFor ARM (32-bit): https://alexaltea.github.io/unicorn.js/ https://alexaltea.github.io/unicorn.js/ or https://cpulator.01xz.net/ https://cpulator.01xz.net/ For other architectures, it feels like a missed opportunity to not have an independent WASM build of MAME's debugger, as the whole project could already be built in WASM (although I think the latest versions were broken, as that target isn't actively maintained): https://docs.mamedev.org/initialsetup/compilingmame.html#emscripten-javascript-and-html https://docs.mamedev.org/initialsetup/compilingmame.html#ems...
- soferio 1y agoThis is an assembler: https://paleotronic.com/merlinplus/ https://paleotronic.com/merlinplus/
- pjmlp 1y agoAs info for others, the site currently has CORS errors, thus it doesn't assemble/execute.
- wkjagt 1y agoThis one is quite fun: https://skilldrick.github.io/easy6502/ https://skilldrick.github.io/easy6502/
- halb 1y agoNice to see my playground trending! All of this is essentially made possible by the blink engine by @jart: https://github.com/jart/blink/ https://github.com/jart/blink/ Which is an x86-64-linux emulator written in a few kb of c code. There is no Backend server, everything runs locally in the browser in a runtime that weights less than a screenshot of the website itself! To implement it I modified the blink emulator to run as a C library, and compiled it into a Typescript + WASM module that exposes an emulator API. Then I built a regular web app on top of it.
- philipallstar 1y agoTiny nit! Spelling in your About section: > Unlike traditional onlide editors
- 201984 1y agoPretty neat idea, but it evaluates the lzcnt instruction incorrectly, so it's possible others are wrong too. If you have access to a real x86_64 processor, you're probably better off just using it, and then you get the power of a full debugger with breakpoints in gdb. Also, the "Guides" button and the "embed on your website" link on the main page are broken.
- halb 1y agoThis is mostly an educational tool, and it's intentionally designed to present data in a similar way to GDB. The idea is that students will use this tool to learn basic assembly concepts without the extra friction of GDB, and when they are ready they will move to the real tools, where hopefully they will already recognize some of the elements. I am intentionally not implementing any useful feature beyond single stepping so that students will not remain stuck on a local minimum using this website.
- Razengan 1y agoI always wondered/wanted to play with a language that comes between Assembly and C (in terms of power/control, granularity, and also ease of use): * Be just like Asm in every way, but: * Have standardized architecture-agnostic mnemonics that translate to CPU-specific ones: like something that stands for both MOV on Intel and LDR on ARM. * Take care of common boilerplate like function call rituals, or the multiple instructions required for loading 64-bit numbers on ARM. Basically a real language like the ones in "programming simulation" games.
- blashyrk 1y agoWouldn't that basically be very similar to, for example, LLVM IR?
- halb 1y agoI was gonna say, this sounds exactly like LLVM IR, except for the ease of use
- pjmlp 1y agoBesides LLVM IR, we have MSIL, WebAssembly, among many other bytecode formats, languages like Forth, or Lisp based assemblers.
- SilentM68 1y agoThe Guides link does not work. Just stays at the same page.
- osa1 1y agoIs blink an interpreter for x86_64 instructions, or does it compile basic blocks to the host architecture? I had a look at the source code but I'm not sure how it works. It looks a bit too small (50 kloc C + 6.6 kloc headers) to have code generators for all of the supported host architectures.
- halb 1y agoIt's an interpreter, but it does support JIT to x64 and arm. There are some details here: https://github.com/jart/blink/?tab=readme-ov-file#technical-details https://github.com/jart/blink/?tab=readme-ov-file#technical-... On the x64-playground website it's just running as an interpreter, inside of web assembly
- ngcc_hk 1y agoA very good site and lots of good comments