2013-10-18 12:01:50 UTC
Rather than hoping to put my assembly knowledge to work in development, I'm interested in learning general, transferable concepts which will help to make me a "better programmer".
My question is, what do people think is the best stand-alone platform for learning assembly language? I'm planning on buying some type of microcontroller to learn on, and I want to make a good choice that will fit my level of experience.
My goals are:
> gain some transferable knowledge of the basic concepts of low-level programming which are common to most assembly languages
> The language I choose must be widely-used (eg. ARM, 68k, MASM) or at least similar enough so the basic concepts I learn will be transferable
> gain greater insight into how code gets executed "on the metal", in order to become a better high-level coder
> learn more about low-level computer hardware architecture (cpu/memory architecture)
> Learn some game programming in assembly to gain an insight into how games used to be developed back in the late 80s and early 90s, before the widespread use of compilers. Eventually I would like to program a simple video game (with graphical display, not just making LEDs flash).
> Learn to work within severe hardware/resource limitations (in this sense, the more limited the device, the better - as long as it is capable of something approaching SNES / Genesis performance I'll be happy).
I have already made a few decisions:
> 8 and 16 bit video game console development units are too expensive, too difficult to find, and information on development for these platforms is arcane and fairly scarce, which would make it unrealistically difficult for someone with my budget and level of knowledge. I am however considering buying an old Commodore 64 to use.
> I want to avoid x86 for now, until I have learned the fundamentals - my research suggests it is bloated and more difficult to learn than many other languages.
> I don't want to spend a large amount of money on hardware/software (in case my brain explodes and I decide assembly is too much for me), but that's not to say I wont shell out for a decent little microcontroller or something like the Raspberry Pi.
I'm interested in people's opinions on:
> Which hardware I should acquire to use as a learning platform (eg. different types of microcontrollers)
> What is the nicest/easiest assembly language for someone with my level of experience to learn. Something with a sensible syntax, plenty of documentation and a reasonable-sized group of active users would be great.
A couple of side questions:
> What is the best assembly language to learn if I want to improve my debugging skills and general programming practice?
> What would be the best assembly language to learn if I wanted to pursue a career in embedded software development?