3 ms·
Host here. Becky is that old school type of programmer that I don't get to talk to too often. She recommendations devs today should learn bare metal programmin
by adamgordonbell 4y ago
Host here. Becky is that old school type of programmer that I don't get to talk to too often.
She recommendations devs today should learn bare metal programming by starting with 6502 assembly.
I miss the elegance and simplicity of writing 6502 code. The code, you enter it, it just does one task, leaves. Next function does the same thing. Whereas in C++, you can write code that actually still maintains that paradigm and it works just fine. But it’s so easy if you don’t really know what’s going on to write what you think is three lines of code, this’ll do everything. But when you look at the output of the compiler, it’s a novel.
That’s my main takeaway. Is that when you truly understand the instruction sets, how the stack works, how memory management works, how the hardware works, how it all interacts, then you have a true understanding of the limitations of computers
Here is a another fav part:
They gave her a retail version of the game for the PC, a CD-ROM. The compiled final version of the game, compiled for a completely different platform with a different architecture, but it’s on a CD and the 3DO has a CD drive.
They said it runs on the PC, so we just say that’s 90% complete.
- Alekhine 4y agoHow do I do that? I know about easy6502 but what other projects could I start with?
- signaru 4y agoI've programmed a bytecode virtual machine, and while not the same as bare metal assembly, it made it easier for me make sense of assembly (while also greatly benefiting from learning to code the virtual machine). Crafting Interpreters was the book I followed.
- adamgordonbell 4y agoBecky recommends Assembly Lines, by Roger Wagner then writing a game for an apple ii emulator. Others have done similar projects with chip-8, which I think is even simpler.
- pizza234 4y agoThe type of advice given makes sense if one has either a huge amount of free time (both in the short and long term), or works professionally in that field (like the guest did in the past). But in real world, that's not something that works. Programming for old platforms is fun and has historical value, but there are a lot of problems that don't make sense today. It's not particularly educative to write lots of lookup tables, or to know optimized (that is, fast enough) 16-bit additions, let alone divisions (and problems like these are typical once one writes something that it's not just a "hello world"). Heck, even programming (optimizing) for a 286 is significantly different from how one would program assembly today. Having said that, I'm definitely not against learning the lower level, but just to focus on a relevant low level. There are different approaches, but a good starting point to understand modern computers from the bottom up is the series "Write great code" by R.Hyde, volumes 1 and 2. If one wants to program on 6502 for the sake of programming on 6502, there are plenty of books on archive.org to learn from. It's not easy to find good ones, and they're somewhat hard to read because they're bad scans, but some are very valuable in terms of learning assembly by writing non-trivial, real-world routines.
- fabricedeville 4y agohttps://www.chibiakumas.com/ https://www.chibiakumas.com/ is an excellent ressource
- micvbang 4y agoIf you want to get into assembly code in general, I can highly recommend getting into CTFs (capture the flag, "competetive" hacking.) It's a lot of fun and if you go for the reversing or pwning tasks, you'll be directed towards x86 assembly almost immediately. There's _loads_ of content (e.g. writeups) to get you started. I remember using the site pwnable.kr quite a bit :)