![]() |
|
![]() |
|
|
Thread Tools | Display Modes |
|
|
#1 |
|
Expert Programmer
Join Date: Dec 2004
Posts: 794
Rep Power: 4
![]() |
Wanting to learn something.
I want to learn assembly programming. Not to actually use it that often, but to learn what goes on at a low level inside the computer. My current understanding is just that I hit "Ctrl+Shift+B" and Visual Studio farts out a program. I want a more in-depth knowledge!
For this reason I don't care about "High-Level Assembly" or any such tools that make assembler easier with HLL constructs. I want the raw, uncut, assembler experience! Any suggestions on what resources I should use to learn, and what assembler I should use? Thanks, uman
__________________
Few people deserve to be compared to (Rush) Limbaugh, most of them were convicted at the Nuremburg trials. --WilliamSChips on Slashdot |
|
|
|
|
|
#2 |
|
Resident Grouch
![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jun 2005
Posts: 6,453
Rep Power: 10
![]() |
If you haven't already, get some material and learn how a "computer" system works. Then pick some processor, study its spec sheet, gather some material on its assembly language, and write something simple. The x86 is probably at your fingertips, so that's one possibility. You can write inline assembler with your C/C++ compiler, no doubt. You can also write some C/C++ code (or whatever language flips your skirt) and look at the assembler/machine code it emitted. If you want it REALLY tough, as in days of yore, before they blessed us with MUL instructions and such, investigate that LC-3 mentioned in another thread here. It's a simulated micro and there are "emulators" for it in Windows and *nix so that you can run what you write on your desktop. There's a sort of minimalistic editor and debugger for it. That one will put some hair on your chest because you're going to actually have to learn how things build up from the basics. On the other hand, the missing basic operations may represent somewhat of a side step, inasmuch as few, if any, real world processors are so limited.
__________________
Abstraction doesn't make it impossible to write bad code; it makes it possible to write superior code. Contributor's Corner: Grumpy on C++ Exceptions DaWei on Pointers |
|
|
|
|
|
#3 |
|
Newbie
|
Programming Groundup
Well, I believe this book is just what you need: Programming Groundup.
It is a book that would teach you how the computer works, how to think like a programmer and also teach you some basics of Assembly language. I am new to programming, but I took this book by recommendation from some guys from the #C channel at freenode for pretty much the same or similar reasons you mention, to learn how it all works deep down there and then more easily learn other languages with that base perspective already set in my mind. You can download the book here. Thx Daniel
__________________
Libervis.com - Nexus of the free world online_ |
|
|
|
|
|
#4 |
|
Resident Grouch
![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jun 2005
Posts: 6,453
Rep Power: 10
![]() |
I just gave it a cursory look, but the book looks pretty good to me. It's obviously going to be Intel and Linux centric to some degree, but that's all to the good so long as one remembers that it is e pluribus unum.
__________________
Abstraction doesn't make it impossible to write bad code; it makes it possible to write superior code. Contributor's Corner: Grumpy on C++ Exceptions DaWei on Pointers |
|
|
|
|
|
#5 |
|
Expert Programmer
Join Date: Dec 2004
Posts: 794
Rep Power: 4
![]() |
Sorry but what does "e pluribus unum" mean? I'm aware it is the motto of the USA but I've never heard it in conversation.
__________________
Few people deserve to be compared to (Rush) Limbaugh, most of them were convicted at the Nuremburg trials. --WilliamSChips on Slashdot |
|
|
|
|
|
#6 |
|
Resident Grouch
![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jun 2005
Posts: 6,453
Rep Power: 10
![]() |
One of many.
__________________
Abstraction doesn't make it impossible to write bad code; it makes it possible to write superior code. Contributor's Corner: Grumpy on C++ Exceptions DaWei on Pointers |
|
|
|
|
|
#7 | |
|
Professional Programmer
|
Quote:
__________________
% rc4 hexkey < input > output
#define S ,t=s[i],s[i]=s[j],s[j]=t /* rc4 hexkey <file */
unsigned char k[256],s[256],i,j,t;main(c,v,e)char**v;{++v;while(++i)s[
i]=i;for(c=0;*(*v)++;k[c++]=e)sscanf((*v)++-1,"%2x",&e);while(j+=s[i]
+k[i%c]S,++i);for(j=0;c=~getchar();putchar(~c^s[t+=s[i]]))j+=s[++i]S;} |
|
|
|
|
|
|
#8 |
|
I eat cake for breakfast.
![]() ![]() ![]() ![]() Join Date: Jul 2004
Location: In my box.
Posts: 4,434
Rep Power: 9
![]() |
I'm curious: what does that actually mean?
|
|
|
|
|
|
#9 |
|
Expert Programmer
Join Date: Dec 2004
Posts: 794
Rep Power: 4
![]() |
Heh. I prefer to speak English except when I'm' being a pompous jerk.
__________________
Few people deserve to be compared to (Rush) Limbaugh, most of them were convicted at the Nuremburg trials. --WilliamSChips on Slashdot |
|
|
|
|
|
#10 |
|
Expert Programmer
Join Date: Dec 2004
Posts: 794
Rep Power: 4
![]() |
And usually when I'm a trying to be a pompous jerk I leave out the extra apostrophes at the end of "I'm".
(bah typos)
__________________
Few people deserve to be compared to (Rush) Limbaugh, most of them were convicted at the Nuremburg trials. --WilliamSChips on Slashdot |
|
|
|
![]() |
| Bookmarks |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | |
| Display Modes | |
|
|