4 ms·
ARM is still a bit icky, but nearly anything this side of a VAX mainframe will be easier to grasp than x86. If anyone's looking to learn, MIPS is really easy t
by sparky 14y ago
ARM is still a bit icky, but nearly anything this side of a VAX mainframe will be easier to grasp than x86.
If anyone's looking to learn, MIPS is really easy to pick up. There's a good simulator (SPIM[1]) with terminal and GUI interfaces and lots of tutorials, as it's used in a lot of undergrad computer architecture courses.
[1] http://spimsimulator.sourceforge.net/ http://spimsimulator.sourceforge.net/
- pjmlp 14y agoAs I grew up with x86 I beg to differ.
- mahmud 14y agoOpinions are trivial to hold. Backing them up, OTOH, is an entirely different matter. "x86" instructions now number in the hundreds. Almost any RISC ISA will max at 30% of that, with less than half of the addressing modes. "Easy" is an adjective, but "easier" is an ordering relation: ARM is easier than x86.
- pjmlp 14y agoI still beg to differ. I find confusing the three parameter mode of many ARM instructions and the possibility to have multiple execution modes. I did Z80, x86, 6800 and MIPS programming back in the day.
- brigade 14y agoARM has a lot of instructions too. Exactly how many depends on how you count them - are pld and pldw different instructions? mov and movw? uadd16 and sadd16? vadd.i16 and vadd.i8? vadd.f32 <Dd>, <Dn>, <Dm> and vadd.f32 <Sd>, <Sn>, <Sm>? Conservatively (relative to x86 where I'd imagine everyone counts pavgb and pavgw as separate instructions), ARM has well over 300 instructions. Include significantly different permutations of instructions, and you're easily over 500, and probably outnumbers x86. Even if you discount vector and floating point, ARM still has around a hundred distinct instructions.
- stephencanon 14y agoARMv7 has 426 distinct instructions (counting sections in the architecture reference manual). x86 does have somewhat more instruction names, but not dramatically more (and the blowup is largely because of differences in naming conventions; Intel, for instance uses different names for [vector|scalar][single|double]float operations, whereas they are all the same name on ARM). What makes ARM nicer (and it is somewhat nicer, in my experience as someone who spends hundreds of hours writing assembly code for both architectures every year) is: 1. non-destructive operations (finally coming to Intel too!) 2. better orthogonality, fewer weird holes in the ISA (especially in the vector ops) 3. no piecemeal vector extensions (all the various extensions that may or may not be available on x86 are madness). When you really get down to it, though, none of these make a huge difference; they're just niceties.
- Someone 14y agoI do not know either instruction set well enough to make any claim as to which is easier, but instruction count on its own is not the best measure. Certainly, orthogonality plays a role, too. In that respect, ancient x86 was horrendous compared to, the 68000 (yes, there is a multiply instruction, but you have to have your data in register X or Y; Z does additions, only). The 68000 had different types of registers, too, but it certainly was way easier to remember which fell in what class (D0 through D7 are data registers, A0 through A7 are address registers). Also, there is the x86 thing (that, IIRC, ARM and Z80 have, too) to give part of a register an entirely unrelated name (upper half of register X is called A, lower half B). That is avoidable complexity, if one is willing to give up backwards compatibility of source code.