Hey GDers, I was studying some Nasm today and had something of an epiphany. It might be odd, but I realized something about assembly programming that may or may not have dawned on others before me. In order to avoid ranting I have noted several specific things based on Netwide Assembler that I beleive makes writing code in assembly - and call me crazy - easier (for better or worse) than writing in some high-level languages:
Nasm makes the math easier
- I so very hated math in highschool because like a lot of people it just wouldn't stick. Folks have been back and forth about whether or not this plays any significant role in a programmers ability. From my perspective, no it doesn't really matter so long as you do recognize a lot of the mathematical formulas as they were taught from the get-go. Chances are you'll have to morph the way you think for the language itself anyway(cough cough X,Y coordinates). In turn, Assembly, being so damn manual, can turn a complicated string into something much more systematic and therefore making it so that you're under the hood using ADD and SUB (INC, DEC etc) instead of "If" statements laced with multiplication and division. Given, that's a double edged sword isn't it? Which brings me to my next point.
It's like, the computer is the tree..and I'm the hugger. And then you have these chainsaws..
- You can jerry-rig whatever the hell you need to with some well written assembly. The way I see it is, there's an apple in the tree(a computer problem), you can either (solve the problem by..) start building a fine staircase with assembly, straight up climb the tree yourself with C or chop the tree down with say..Perl and walk off with all the fruit with a bag made of leaves, screw what the tree looks like now, right? I like being close to the hardware but that's not the point. In fact I've always just wanted to use that analogy so don't mind me. I'll just move on and say..
The syntax doesn't bother me
- you will run the other way when you see perfectly good grammar being slaughtered (in a good way) for the sake of making syntax "easier". If you're anything like me you will see the "elsif" (I love perl) statement and go 0_o ugh. I'm not even going to bring up graphics libraries, those mouths are just filthy. Mov, dd, db and even EAX makes more sense to me because it looks like it's supposed to be abbreviated. But I love high-level langauges nonetheless. It's like pseudo-code on top of code on top of comments.
Assembly literally makes you feel the structure
- Which is what I think the real allure is. It's the fact that you can reallly get into the nooks and get stuff done. Also, I want a share a little tip to folks learning x86 assembly because it helped me out, if any pros out there want to share/correct anything in turn that's be badass but here I go.
operation destination source
is some common format seen in the assembler. The best way I memorize and apply this is by thinking:
The mission the target and rendevous (except you rendevous before taking out the target, hitmen can be team players too.)
or if you're not weird just zone in on the destination being the middle most accessible part of a road of some sort and by adding labels and directives etc etc you're adding lanes to it. But have these lanes be specific similar to how there are bike lanes and HOV lanes and hell, trolley car lanes in real life. Just my two cents. What are your thoughts on assembly in 2013?