Archived

This topic is now archived and is closed to further replies.

Witchcraven

Very good programmer wants to make CPU do more

Recommended Posts

I am a very good programmer skill wise, and I can envision the most complex data structure imaginable while kicking ass on quake 3, ''INSERT BOAST HERE''. But when I got in to programming, it was the age of SDK''s for all your needs. Not that im complaining, I can work wizardy with SDK''s in short time. But I think its time I actually learn assembly, and the hardware stuff. The things that SDK''s are designed to shields you from. So I could like write a bootstrap loader, or display a pixel on a PS2(damn that emotion engine, NO SDK!). Well anyway, does anyone know of any good OS indipendant asm tutorial for the x86. Also good how-to-make-hardware-do-things-without-an-sdk tutorials and info would be great. Oh yeah, I use Linux, and I have nasm. I have windows, but I would prefer not to use it. My OS of choice may be of some relevance to someone, I dont know. Any help would be great. Thanks in advance.

Share this post


Link to post
Share on other sites
Learn under DOS. Linux isn''t an "assembly-friendly" environment. That doesn''t mean you can''t write programs in assembly under Linux, but it means you can''t do anything fun.

Look for "The Art of Assembly Language", it''s a free online book. Another good book is Jeff Duntemann''s "Assembly Language: Step by Step." I hear the newest edition teaches with NASM and even offers some Linux information.

Another really good book (which I used) is: "The 80X86 IBM PC and Compatible Computers (Volumes I & II): Assembly Language, Design, and Interfacing" by Muhammad Ali Mazidi and Janice Gillispie Mazidi. It''s an excellent book, but it it doesn''t come cheap. I got it a few years back for $100 :/

---
Bart

Share this post


Link to post
Share on other sites
quote:
Original post by trzy
Learn under DOS. Linux isn''t an "assembly-friendly" environment. That doesn''t mean you can''t write programs in assembly under Linux, but it means you can''t do anything fun.

Translation: (generally) no nifty assembly-driven graphics under Linux.



I wanna work for Microsoft!

Share this post


Link to post
Share on other sites
quote:
Original post by Gwahir the Windlord
Have fun making separate code for all the hardware out there....


eh, or just do i*86. If you think gamers who use linux exclusively are a rare breed, think about gamers who use linux on sparcs et. al. exclusively :-P

Share this post


Link to post
Share on other sites
Actually, I dont intend to use asm for games only. btw, I know you can do "nift graphics stuff" with linux, cause ive seen the code, anyway... I primarily plan on useing asm for OS and embedde device programming, like for GBA and PS2. You can make linux system calls with int 0x80 or something like that. And im tired of relying on API''s to do the things I dont know how to do with asm.

Share this post


Link to post
Share on other sites
I used to think like you until i did work experience at SGI, those people had years of experience in the field working on IRIX and also linux (think XFS), they know there stuff and even they say the only thing assembly should be useful for today is for core kernel code, people should be working towards smarter compilers and most compilers can out do your code anyday (well SGI compilers anywho), I was listening to a conference they were having on IA64 asm for there new IA64 machines, they say it''s a waste of effort, people with 20 to 30 years experience, don''t take it lightly, it''s good to know, but will become less practical with time.

Share this post


Link to post
Share on other sites
There''s practically no point in doing assembly on an IA64 because a lot of the work that used to fall to the CPU has moved onto the compiler. It''s now up to the compiler to make sure instructions can run in parallel, and in fact the compiler specifies which instruction to run in parallel (using nifty MIMD instructions - Multiple Instructions Multiple Data). This is a good thing, since it takes what used to be a huge number of transistor off the CPU - transistors which can be used to make the rest go faster! Unfortunately, it means you need really good compilers with really good optimizers to see much benefit...

Anyway, this is pretty pointless if you''re after embedded and/or core OS stuff (stuff like bootloaders and the real low-level stuff) since a compiler can''t do that (since it knows nothing of the correct instructions and/or registers needed to access these features)


codeka.com - Just click it.

Share this post


Link to post
Share on other sites
Yeah. I only plan for lowlevel OS core tuff, and GBA, and PS2. You need asm to get any performance out of the ps2. plus, I would like to do an efficent compiler for my favorite language, euphoria. It has a C translator, but its not as fast as human C. I think there is a lot of potential for euphoria. I think its better than C for everthing except 3d graphics, and 3d sound. On the plus side, you can use compiled c functions for it. I would still like to write an optimizing compiler for it anyway.

Share this post


Link to post
Share on other sites
You could write an optimizing compiler for euphoria in C, btw.

I saw a book in the stores, years ago, something like "Make your own 32bit OS" for x86.

Learning x86 won''t do you a whole lot of good on the MIPS based PS2... if you''ve never done any assembly it might help a little.

Share this post


Link to post
Share on other sites