Author Topic: Assembly Language Learning Time / Curve?  (Read 2832 times)

Offline dalfonso01

  • Jr. Member
  • *
  • Posts: 44
Assembly Language Learning Time / Curve?
« on: September 07, 2014, 05:48:12 PM »
Hi,
I was on the topic for some time. I would know , what is the time frame I should consider to become fluent on assembly.That can be quite different among people, but probably some experienced person here can talk based on his/her experience.

My experience with assembly up to now, is that it is a never ending story, as also many gurus as Abrash always say. What seems to me is that a content oriented approach is a bit cumbersome (it does not seem reasonable remembering the list of jumps, or all the variations o rotate, per se), as the topic is quite flat, so it could work at the college, while (after a large overview) having an interesting problem to select a first group of needs to fill, is probably better. I am going deeper in the compilers writing to have this compelling stuff to work as a concentrator.

Any suggestion / story would be very appreciated.


Thanks
Fabio D'Alfonso
 

Offline nasm32

  • Jr. Member
  • *
  • Posts: 25
Re: Assembly Language Learning Time / Curve?
« Reply #1 on: September 09, 2014, 10:37:06 PM »
It depends solely on what kind of programmer you are. If you are like me, once I find something interesting about a programming language, I can spend a whole year just programming with that specific part of the language, whatever that part is. Don't get stuck on "parts of a programming language that interests you". Once you grasp something, move on quickly to a different part.

I did that, for 15 years and I know nothing more about asm than someone who have spent 1 month on it. All of this because I became too specialized, too interested in specific parts of a language, rather than studying all about the language. If something interests you, don't get tempted into it, move on once you understand something, or else you become an old fart who understand nothing.

Offline dalfonso01

  • Jr. Member
  • *
  • Posts: 44
Re: Assembly Language Learning Time / Curve?
« Reply #2 on: September 11, 2014, 05:28:41 PM »
Hi,
as I told, I am moving on with compilers technology, and would end (or starts, depends on point of view)  with a Pascal compiler written in C++/(parts in nasm) with nasm as assembly target, for which I have a book. Compilers are one of the most covered matter with relevant hands on material, that can be combined to theoretical stuff such as Aho Sethi Ullman.

Also the compilers technology is one of the most pervasive and reusable in all the CS (formatters,compilers, interpreters, automata in general).

Linking the assembly to something concrete and wide,  it seems the better way to leave the need to lead the story, in this case a quite complex one.

This is my idea on how to go on.

Offline InfinitelyManic

  • Jr. Member
  • *
  • Posts: 6
  • Country: 00
  • x86-64 NASM on Linux
Re: Assembly Language Learning Time / Curve?
« Reply #3 on: November 16, 2014, 06:31:42 AM »
nasm32 - good point; however, I'm curious to know what parts of ASM did you focus on for so long? 

Some martiall artist said, "I don't fear the man who knows ten thousand kicks, I fear the man who has practiced one kick ten thousand times."

My approach to learning ASM was to get my hands on all the 32-bit assembly on Linux books I could find.  BTW - there aren't that many.  I reviewed all the basics and that was good. 

However, I started doing number crunching, number theory, Project Euler type stuff; which exhausted what I learned from the books and caused me to dig futher into the Intel & AMD manuals.  This also led to learning SIMD and working w/ the xmm regs; which I now use almost once a week. I also speed up my learning of Awk & Python3 the same way.

So my advice is to spend some time solving math & word puzzles as a way to augement your learning of any programming language. Solving puzzles will force you to be creative; especially in assembly where you have to create your own functions/macros; e.g., DigitSum(), isPrime(), isPalindrome(), gdc(), isSquare(), nthRoot()...

David a/k/a @InfinitelyManic