5 ms·
IIRC Microchip's 8-bit PIC line had poor/nonexistent GCC support because their terrible instruction set provided no way to maintain a data stack. Their own comp
by colanderman 11y ago
IIRC Microchip's 8-bit PIC line had poor/nonexistent GCC support because their terrible instruction set provided no way to maintain a data stack. Their own compiler just allocated everything statically.
Granted, it's (thankfully) been over a decade since I had to use a Microchip microcontroller, and they've presumably improved since. But Atmel got it right from the start. GCC-AVR produced beautiful assembly and their ISA was a joy to use. RIP Atmel.
- tptacek 11y agoCalling AVR a "joy to use" is pushing it a little far. There are things to like about AVR chips as a package, but the AVR instruction set is pretty janky. I don't understand why they're so popular compared to the MSP430.
- saaadhu 11y agoCare to elaborate?
- wglb 11y agoSee if https://news.ycombinator.com/item?id=10946870 https://news.ycombinator.com/item?id=10946870 answers.
- blackguardx 11y agoI found the AVR instruction set pretty straight forward. Granted, it was my first forray into assembly and I learned it around 17 years ago at age 14. Maybe everything seems easy in hindsight at that age. I've never programmed MSP430s in assembly, but I have for PICs and found their instruction set to be more funky than AVR.
- tptacek 11y agoSo first a couple caveats: (1) I'm sure AVR is a hell of a let better than PIC, (2) I come at this from a really weird place (exclusively emulators and compilers), and (3) I'm not talking about the AVR parts themselves, which might be more cost-effective for a given project. That said: * Harvard architecture (split I & D memory) * 8 bit registers * Not at all orthogonal, and particularly painful for pointer addressing * The stack pointer is annoying to work with * Address wrap at physical memory bounds, rather than the bounds of address space I could pick a bunch more nits that would only really be relevant to someone writing an emulator (complicated instruction decode, IO addressing, &c) but those are my big complaints. I find MSP430 much more pleasant to work in.
- colanderman 11y agoThose are all true (though that an 8-bit microcontroller has 8-bit registers is… unsurprising). However I am referring to the instructions themselves, which were well-engineered to match the needs of a compiler. The result is very compact assembly for most C programs that you would write on an 8-bit microcontroller (including things like 16-bit arithmetic).
- ild 11y ago1MIPS @ 1MHZ made it popular.
- ild 11y agoPICs used to be less power hungry though and had ROM versions.