4 ms·
If starting with x86 assembly seems overwhelming to you there are a few alternatives that might help. First are virtual machines that were developed to be prog
by networked 14y ago
If starting with x86 assembly seems overwhelming to you there are a few alternatives that might help.
First are virtual machines that were developed to be programmed directly in a kind of assembly language. CHIP-8 [1] is a good example of one of those, being a VM standard developed to make games run across a broad range of otherwise incompatible mid-1970s hardware. It gained a new popularity in the early 2000s and as a result you can now find CHIP-8 emulators for virtually any platform, including your mobile phone, as well as a range of assemblers and other development tools. It's a fascinating bit of history in its own right and also a great platform to emulate in the first emulator you write. A bit further away from the syntax of "real" assemblers is Linoleum [2], which is meant to be a kind of a cross-platform assembly language targeted towards graphics applications, but the principles behind programming in it are largely the same. I can recommend both from personal experience, although CHIP-8 is probably a better starting point.
Second, if you want something closer to real hardware I'd suggest learning how to program for the MOS 6502, the CPU used in the Apple II and (with some modifications) in the Commodore 64 and the NES gaming console. One way to get started with it is Easy6502 [3], which is an online introductory course on 6502 programming bundled with an in-browser emulator.
[1] https://en.wikipedia.org/wiki/CHIP-8 https://en.wikipedia.org/wiki/CHIP-8
[2] https://en.wikipedia.org/wiki/Linoleum_%28programming_language%29 https://en.wikipedia.org/wiki/Linoleum_%28programming_langua...
[3] http://skilldrick.github.com/easy6502/ http://skilldrick.github.com/easy6502/