4 ms·
I've written a SuperH and TriCore emulator from scratch (qemu wouldn't cut it). I couldn't do it in JavaScript because it falls apart when it comes to bit-shift
by MuffinFlavored 6y ago
I've written a SuperH and TriCore emulator from scratch (qemu wouldn't cut it). I couldn't do it in JavaScript because it falls apart when it comes to bit-shifting and integer arithmetic. A lot of processors rely on the C-like functionality of int32_t, uint32_t, etc.
>>> 0 in JavaScript just doesn't cut it.
- dnautics 6y agoYou can use typedarrays, no? I built a fantasy emulator several years ago, and that was my strategy.
- MuffinFlavored 6y agolike this? const a = new Uint8Array([0xFE]) const b = new Uint8Array([0x02]) a[0] = a[0] + b[0]
- dnautics 6y agoyes, although IIRC what I did was more like this: const r_idx = {ax: 0, bx: 1...} const registers = new Uint8Array([...]) add = (r1, r2) => registers[r_idx[r1]] = registers[r_idx[r1]] + registers[r_idx[r2]] which lets you do: add("ax", "bx") which is one step closer to making it look a lot like asm syntax.
- Jasper_ 6y agoI've written quite a number of emulators and file format parses in JavaScript. What was missing for you?