5 ms·
Thanks, this seems like a nice book. As it happens, I've been learning ARM assembly in the recent weeks; just for fun so far. I've mostly used some instruction
by yason 17y ago
Thanks, this seems like a nice book.
As it happens, I've been learning ARM assembly in the recent weeks; just for fun so far. I've mostly used some instruction set references or ARM cheatsheets I found on the web.
Having written mostly m68k assembly before (well, 6502 too...) I knew a bit how to read ARM assembly but I wanted to learn it throughoutly and gain such insight into the instruction set that can only be achieved by writing non-trivial programs with it. Before that I wanted to learn x86 assembly but I soon gathered I'll have better use for my time than that.
I like ARM instruction set quite a lot: it's nicely coherent, has nicely orthogonal features (such as conditional instructions), and doesn't seem to be ridden with despicable backwards-compatibility hacks like x86 assembly.
I like that for once something as good as this has significant marketshare in mobile cpus. Just wondering if they could gradually creep into the market for desktop cpus as well.
- prodigal_erik 17y ago> Just wondering if they could gradually creep into the market for desktop cpus as well. Much like I was hoping that PPC would dethrone IA-32 back in the day (I think Linux, OS/2, and NT were all just about ready to support it) but it seems economies of scale are everything. I'd buy an ARM and a desktop motherboard just to mess around with, but I've literally never seen a local screwdriver shop that carried them even for smoke tests. I guess they're doing fine without hobbyists.
- Tuna-Fish 17y agoArm is creeping toward bigger market share trough netbooks -- if if can succeed there, it will become more available as a desktop choice. Lacking that, just go buy a Nokia n900 (or an used n810 or something), and code for it.
- Avshalom 17y agoThe Beagle Board is probably the closest thing there is to a desktop MB that uses the Cortex chips.
- daeken 17y agoA word of warning. Get in the habit of thoroughly commenting your assembly early on, or you likely never will. If you start by commenting too much, you can gradually bring it down. If you start commenting sparsely (or like me, not at all), it's considerably more difficult to increase it. That said, you picked a good first ISA to learn seriously. ARM has some very cool features, even if it does have its serious faults (poor floating point/vector support, even where it's available). Learning x86 will be trivial from there; the only difficult thing is knowing what the side-effects of functions are, as x86 is horribly inconsistent in that regard. Good luck!
- mru 17y agoARMv7 has a SIMD unit (NEON) that easily outshines SSE and Altivec. Floating point support is also good nowadays.
- DarkShikari 17y agoOr, better said, the instruction set NEON outshines SSE and Altivec. The actual vector unit is a bit lacking performance-wise by comparison, which shouldn't be particularly surprising given that it runs on 100 times less power.
- mru 17y agoTrue, but there's nothing to say future implementations will not be faster. Adding more execution units is "easy". Fixing an instruction set is not.
- nchong 17y agoIn that case I fully recommend that you also check out Steve Furber's "ARM System-on-Chip Architecture" as a very readable introduction to ARM assembler and an easy way to learn about the microarchitecture and design philosphy of early ARM processors (ARM7 and ARM9) [Furber was one of the original engineers that worked on the first ARM design]. The architecture has come along quite a bit since those days so if you'd like the most up to date release you need to look for the ARM v7AR Architecture Reference Manual which you can get (with a click-through) here: http://infocenter.arm.com/help/topic/com.arm.doc.ddi0406b/index.html http://infocenter.arm.com/help/topic/com.arm.doc.ddi0406b/in... This will cover you up to the latest cores like Cortex-A8 inside the Beagleboard and Cortex-A9. Enjoy!
- gvb 17y ago"I like that for once something as good as this has significant marketshare in mobile cpus. Just wondering if they could gradually creep into the market for desktop cpus as well." It is going to be hard to displace x86 desktops, but I'm looking forward to ARM-based "netbooks" and pocket-sized computers like the Nokia N900. See Ubuntu job postings and Google's ChromeOS - I believe this presages ARM-based small and tiny mobile computers. The big question is whether the Atom (and whatever AMD is working on) will be able to reduce their chipSET power to compete with the ARM SOC power numbers before ARM grows up into that market (growing up is always easier than growing down).
- yuvi 17y ago>it's nicely coherent, has nicely orthogonal features Obviously with exceptions, especially with the instructions added after armv4. For instance, the allowed addressing modes vary depending on instruction: ldr allows a 12 bit offset, ldrd only an 8 bit, ldm and vld allow none, though vld allows a strided increment. Only ldr* non-exclusive allow a register offset. Thumb-1/2 and exclusive load/store change things a bit more, but they aren't generally stuff to care about unless you're doing kernel or compiler programming. Also, none of the neon instructions can be conditionally encoded, but there isn't much reason to do that. As for desktop arm, a massively multicore machine would be nice, but the average user doesn't care much about desktop CPU power consumption nor make good use of more than two cores. Netbooks have to watch out though.