Assembly
-
I did 4 years of Motorola 68000 assembly programming for embedded control applications. Keep in mind that Intel x86 type processors and their decendants are not the only hardware out there (yes, I know, they dominate). You may find a good book for another processor type, and that is still good for understanding assembler in general. I would suggest also reading up on compiler theory, because this may more directly benefit you in understanding what your program in a higher-level language will do. Even if you knew assembler well, that does not tell you what the compiler may be doing.
-
Emulators. Afaik my college didn't have any hardware for the MIPS assembly they taught.
-- You have to explain to them [VB coders] what you mean by "typed". their first response is likely to be something like, "Of course my code is typed. Do you think i magically project it onto the screen with the power of my mind?" --- John Simmons / outlaw programmer
-
Emulators. Afaik my college didn't have any hardware for the MIPS assembly they taught.
-- You have to explain to them [VB coders] what you mean by "typed". their first response is likely to be something like, "Of course my code is typed. Do you think i magically project it onto the screen with the power of my mind?" --- John Simmons / outlaw programmer
I first learnt Z80 assembly language when I first joined the industry in 1982. Of course, in those days I was only a tea boy...
-
> Just remember you can only try the code on the processor type you have. Not at all. Simulators/emulators are used heavily in universities and I'm sure in real-world embedded systems development. Sometimes getting your code onto the target is a hassle, so you want to be reasonably sure it's working before you send it/burn it/whatever. We used simulators for MIPS64 (probably the most fun assignment I've ever had) and an 8088 embedded board. Try it out - it's mind-expanding! Someone else mentioned the m68k - that's a decent old architecture too. I've got one sitting in an Atari ST on the floor here :)
-
Absolutely true. Got any ideas?:laugh:
You could run a contest of sorts and offer your development services for free to the winning idea. There are businesses that have needs and if you find a common one, you can build it, use the company as a test bed and then market it to all the others that need the same solution. If not, you might try just talking with different business owners in your area and seeing exactly what problems they run into. A good place to start is at Chamber of Commerce meetings or local business groups.
Rocky <>< Blog Post: Windows Live Authentication - Easy Stuff! Tech Blog Post: Vista ReadyBoost! Tech Sites: SilverlightCity.com ~ TheSilverlightDirectory.com ~ TheWPFDirectory.com
-
I'm interested in learning assembly, so i can better understand how my code executes with the hopes of writing more effecient code. Does anyone have any good suggestions on books and or sites?
Steve, Have you considered reading Donald Knuth's books on MMIX? There are two that I can find on Amazon, a shorter version that is new(-ish) http://www.amazon.com/Art-Computer-Programming-Fascicle-Millennium/dp/0201853922/ref=sr_1_2/104-0305406-5819919?ie=UTF8&s=books&qid=1188429114&sr=8-2[^] and the original one (which is quite a bit longer) and is more about the architecture. http://www.amazon.com/MMIXware-RISC-Computer-Third-Millennium/dp/3540669388/ref=sr_1_5/104-0305406-5819919?ie=UTF8&s=books&qid=1188429114&sr=8-5[^] There is no hardware that actually runs MMIX natively, but there are emulators, and if you are doing this for pedagogical reasons I think that doing the exercises out of the first book will probably be more useful for you. Cheers, Peter.
-
At work its .net, but i'm not as interested in learning assembly for the sake of writing assembly, I'm more interested in having an understanding of how my code is executing. At home I write C++ (my goal is to have my program run on this [^] )
The fit looks like a nice small form factor pc. It states it can run XP or Linux which is nice. It's too bad that it only has 256 MB of memory that cannot be added to. So you want to understand how your C++ code is executing after being translated to assembler. So in essence you're asking what is the best C++ coding style to write that will generate the most efficient assembler? You can start by making sure you have the 'Optimize' option selected in your project properties settings in Visual Studio. The Optimize option actually will cause the compiler to create more efficient assembler. And it really works. Try running a cpu intensive test project with and without that option and you can see the difference in how your code executes. As for .NET there are some simple tricks you can do to write better code. One example is: if you use a 'Get' property in a method more than once, you'd want to create a local variable and call the property once and store the return value in the local variable and then use the local variable in the rest of the method. A 'Getter' property is essentially a method call so reducing the number of those will improve your code. And of course, never ever use a Get property in a loop statement as that will cause the property (AKA method call) to be called at every iteration which would slow down any loop considerably. I hope my ramblings are helpful to you. It's good that you are thinking about the bigger picture and trying to understand how your source code affects your object code.
-
I'm interested in learning assembly, so i can better understand how my code executes with the hopes of writing more effecient code. Does anyone have any good suggestions on books and or sites?
Take a look to masm32 web site, it contains handy informations.
-
I'm interested in learning assembly, so i can better understand how my code executes with the hopes of writing more effecient code. Does anyone have any good suggestions on books and or sites?
Search for and download "masm32". This is Microsoft's last released assembler. There are gobs-and-gobs of free resources to help you learn, including Intel's website. Most assembly source examples that you find are from the old, DOS days, when there was a 640K memory barrier, and the CPU used a segmented address architecture heavily. It's still good to know the inner workings of the CPU you are programming. You'll appreciate all the incredible things the machine can do a lot more. And ... you'll waste a lot of time. ;P
-Bill
-
I'm interested in learning assembly, so i can better understand how my code executes with the hopes of writing more effecient code. Does anyone have any good suggestions on books and or sites?
Take a look at this site http://webster.cs.ucr.edu/ It's a series of free books, written by Randy Hyde, who teaches computer science at the California University. There are three books: general x86 assembly, Win32, and Linux specific stuff. You can also get your hands on a printed copy of the first one, through Amazon or other resellers. Otherwise, everything is available as freely downloadable PDFs. Hope it helps. Bye!