@anonymous234 said:
Except doing actual stuff raw assembly requires you to learn:
- The logic behind how a computer runs instructions, and how to use them to do interesting stuff
2.Hundreds (thousands?) of x86 instructions, all the confusing details and idiosyncrasies of how the x86 architecture works (memory management, system calls, BIOS calls), and a bunch of command-line tools.
And part 2 is much harder to learn than part 1 (and for the vast majority of people, useless).
While I agree with that, there are a couple points that make the similarity between the game and OS Development a bit more concrete:
For (1), OS Development, for me, does EXACTLY that, it is a way for to understand both how the CPU interprets the given instructions, and make it do useful stuff.
For (2) I don't, and will not, need to know the entire x86 Assembly architecture in order to do this project. Nor will any person need to know every single x86 instruction. There are manuals and references for that, both in how they are used and what they are for. I will only need to know the relevant instructions to implement my algorithms of choice. Why would I need ANY of the SSE, AVX, etc.. instruction set? Finally, I don't need command line tools. If I really, really wanted to (and no, I won't ever do this) I could write the raw bytes to the file. No command line tools required.
(Really, once someone learns int, iret, call, ret, add, mov, shr, shl, xor, or, and, push, pop then they should be able to compose most problems in terms of assembly.)
I agree with you though, you'd be wasting a life if you tried to memorize or use the entire x86 ISA. Use the tools you need to use, no more no less. The linked game seems to emphasize teaching logic over anything else. Anyway, you make some valid points that bring up why Assembly is no longer used as a primary programming language (logic decomposition, terse syntax, large instruction library, ...).