Jump to content

Thinking about starting Assembly

- - - - -

This topic has been archived. This means that you cannot reply to this topic.
25 replies to this topic

#1
begdev

begdev

    Newbie

  • Members
  • PipPip
  • 12 posts
Ok so I have very little programming experience, I know HTML backward and forth, and I have a bit of experience in Java.

But I want to get into Assembly or at least have a little experience in it.

So do you have any suggestions on what I should language start in beacuse I'm pretty sure I can't just dive into Assembly without any significant prior programming experience.

I'm also on a Macbook (the new one if it matters), so what programs will I need to get started with Assembly when I do, and then what do i need for whatever language anyone suggests.

And then any tutorials that are "particularly" good, I can find just any old thing, but if you know of some really good tutorials, then thanks!

#2
TkTech

TkTech

    The Crazy One

  • Moderators
  • 1,396 posts
I highly advise you do not start with assembler. Look into C, or, since your on a mac (using XCode I hope) look into Objective-C as an alternative.

If you really do want to start with assembly, start on a RISC machine, rather then your everyday PC(x86[_64].) There are various books on MIPS Assembly that are great starters.

#3
begdev

begdev

    Newbie

  • Members
  • PipPip
  • 12 posts
Ok, yeah I've started a little with Objective-C, whats a RISC machine? And whats MIPS assembly compared to other types?

#4
TkTech

TkTech

    The Crazy One

  • Moderators
  • 1,396 posts
All of the languages you've tried so far (And no, HTML is a markup, people will laugh if you call it a programming language xD) are machine-independent. This means the compiler hides the complexities of your current architecture.

Assembly is machine-dependent. Even adding two numbers on one machine can be done different on the next.

To be honest, I'm not going to go into the rest (Even my explanation was horrible xD)
Assembly is not for you, not yet. Learn a higher level language first.

#5
WingedPanther

WingedPanther

    A spammer's worst nightmare

  • Moderators
  • 16,822 posts
One advantage of C/C++ is that you can slowly add bits of assembly to it as needed. Assembly will be a bit of a shock, it is not nearly as easy to work with as C/C++ or other languages. You can view the resulting assembly code with some debuggers... it will be interesting to see.
Programming is a branch of mathematics.
My CodeCall Blog | My Personal Blog

#6
begdev

begdev

    Newbie

  • Members
  • PipPip
  • 12 posts
Yeah I know HTML isn't really a "programming" language. And I know assembly is way above where i'm at right now so I guess I'll be off learning objective c for now... How will I know I'm ready for assembly though??

Oh and also what's a RISC computer all I've heard of is x86 or something (whichi belive my mac is?) and are RISC the equivalet to buying a new compute I are they cheaper?

I have many questions...

Edited by WingedPanther, 09 February 2009 - 08:59 AM.
Double post


#7
WingedPanther

WingedPanther

    A spammer's worst nightmare

  • Moderators
  • 16,822 posts
When you stop having questions in objective C, start looking at assembly.

RISC uses a different chip architecture than x86 chip sets. The side effect of this is that they accept different instructions, and as a result have completely different "assembly" programming languages. Assembly isn't a single language, it's a family of languages, one for each processor architecture.
Programming is a branch of mathematics.
My CodeCall Blog | My Personal Blog

#8
begdev

begdev

    Newbie

  • Members
  • PipPip
  • 12 posts
Ok and I'm guessing RISC computers use that kind of assembly that he mentioned? What are the advantages of a RISC over a different type? And I've heard that knowing c++ and then learning objective c is better, should I learn c++ or just jump into objective c?

I think that's all right now. Thx.

#9
WingedPanther

WingedPanther

    A spammer's worst nightmare

  • Moderators
  • 16,822 posts
I'm not familiar with objective-C, so can't help you on that. From what I recall, RISC is more efficient, but has fewer features.
Programming is a branch of mathematics.
My CodeCall Blog | My Personal Blog

#10
John

John

    Writes binary right handed and hex left handed

  • Moderators
  • 6,321 posts
RISC stands for reduced instruction set computing, as opposed to CISC which is complex instruction set computing. In other words the ALU (arithmetic logic unit) on a RISC microprocessor is a lot simpler, and as a result they are more efficient (at what they are intended to do). They are mostly used for embedded devices such as video game consoles, routers, cellphones, ect...

(From my limited [1 month] experience with assembly)
From a logical perspective, there is really no need to learn to learn the x86 architecture. Nowadays, PC hardware is so cheap and compilers are so efficient there is just no reason to save a few microseconds by programming an assembly. A RISC based architecture would be most beneficial.

Personally, I disagree with the previous recommendations. I see no reason why learning C++ or any other high level programming language before assembly would be beneficial. They are completely different. Even problem solving strategies you come up with in high level programming languages have no use. In assembly there are no data structures, there is no object oriented programming, there really isn't even "functional" programming. As far as the syntax and semantics, assembly is one of the easiest languages to learn. Lately I have been working with (RISC) ARM microprocessors and it took me a few hours to know everything about the language - you won't be able to do that with any high level programming language. The issue people have with assembly is working within their limited environment - where trivial tasks such as division become 30 lines of code. Not once in my five years of high level programming did I actually have to write a division algorithm.

If you enjoy problem solving and you want to learn assembly, I say go for it. The past few weeks working with the ARM microprocessor has been the most fun I've had programming in a long time.

#11
WingedPanther

WingedPanther

    A spammer's worst nightmare

  • Moderators
  • 16,822 posts
John, I think you summed up the biggest argument against assembly with your description of writing division. There are some people who have no issue with that, I'm probably one of them, but many people tend to view it as an obstacle to accomplishing what they'd like to get done.
Programming is a branch of mathematics.
My CodeCall Blog | My Personal Blog

#12
begdev

begdev

    Newbie

  • Members
  • PipPip
  • 12 posts
Yes John that was a pretty good summary and i dont mind having to write 30 lines for doing division. I just need a few questions answered and then I think I'll be ready to handle the rest on my own. Just need to get started:

- So since lots of things use RISC processor architecture, what device do you recommend I develop on (I know ipod touch's use an ARM7 processor)
- Whatever you suggest i develop on, what type of assembly language does that use
- And then how do I test the code because it's not like a web application where i just load the page, or java where I just test the code.

I think that's all, sorry I have a lot of questions, I'm sorta clueless. Once these are all answered, I think I can handle the rest, just need to know how to start, because assembly is really different then anything I've done so far, so I don't really know where to start.

Thanks!

Edited by begdev, 10 February 2009 - 01:51 PM.
typo