Hacker News new | comments | show | ask | jobs | submit login

I've been working with x86 for a long time and it's not as bad as it seems once you see the patterns. The 16-bit memory addressing modes can basically be summed up as "one or more of {BP,BX}, {SI,DI}, {disp8,disp16}", and the fact that [BP] is actually [BP+0] is just an encoding detail; the assembler will handle it for you. What would be [BP] is where the [disp16] mode goes.

You don't have to worry about segmentation unless you're working with more than 64K of code or data, which is plenty when you're writing in Asm. And when you do, it's not hard to learn the few extra rules that come with that.

Protected mode and the 32-bit extensions are two separate (but related) topics, you don't need to learn the former to use the latter, and you can already do a lot without knowing either. Unfortunately the 64-bit extensions have gone in a very different direction, and you will need protected mode to use them. But for learning the basics of Asm, I don't think you need 64 bits.

The 8080/8085/Z80 are a little simpler, but learning them coudl be useful if studying x86 since they're its ancestors.

It's no harder (and in many ways easier) than learning the irregularities of English or any other language. One side-effect of learning x86 is that all the RISCs then become really boring and straightforward. x86 has character. :)

I got used to it. The 8086 was the second CPU I learned assembly for (the first was the 6909). While I never did like it as much as the 6809 or 68000, it still had its charms (and I liked it more than SPARC assembly).

> I liked it more than SPARC assembly

Now that's interesting. What is the deal there?

Not him, but I'm guessing it's because SPARC looks a lot like the GAS/AT&T Intel syntax -- lots of 'noise' in the form of % and $ everywhere. It also has branch delay slots and not-so-intuitive operand ordering, register windows, and all the other RISC features that look like they discourage using Asm, as a big part of the philosophy was "use a compiler".

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact