PHPForever
n00b
- Joined
- Jan 11, 2005
- Messages
- 22
I have been programming now for 5 years. I started using Turbo Pascal 6 & 7, later learned PHP 4 and then Java. I have abandoned TP and Java and have concentrated on PHP for the past 2-3 years. However now Im interested in doing some really complicated stuff (or it seems complicated to me) and I need the gurus advice and guidance.
Here is what I would like to learn to do and know in detail:
Bios services
I/O services (Reading and writing to the disk)
Write software to boot up an OS (I think it is called bootstrap)
Write a simple assembler.
Write a simple OS from scratch.
I have read over the following books and many others which I cant even remember:
The Art of Assembly Language by Randall Hyde
Assembly Language Step-by-Step (The first and second edition)
Windows Assembly Language & System Programming (2nd edition) by Barry Kauler
Introduction to 80x86 Assembly Language and Computer Architecture by Richard C. Detmer.
What I have found is that each of those books introduces high level programming in low level. That is it! For example you would learn that there is no such a thing as an integer or a float, just zeros and ones (types are basically the compliers thing) and an agreed upon way to manipulate them (a protocol or a standard). You would also learn something about data alignment, control structures, opcodes, function calls, memory models, etc . a lot of things taken for granted in a high level language. That is absolutely great! I have learned how to write really fast assembly code. However, that is not what Im after.
What I want to know is how exactly does say XASMs IO functions work? How does DOS query those impossibly to query registers? How does DOS change the Instruction Counter? Where are those OS specific registers? How are they used?...stuff that books don't seem to explain, avoid to mention in the first place or say (in so many words) it is magic. I dont believe in magic
So gurus I need your help. How did you learn to do that stuff? What books/resources did you read and recommend? What are the necessary beginning steps? What is the best way to learn this stuff? Any pitfalls to avoid?
Side note: Im currently learning C so that I could try to understand the Linux C library. However, Im afraid even after I learn C, I wont fully understand the Linux C library.
Here is what I would like to learn to do and know in detail:
Bios services
I/O services (Reading and writing to the disk)
Write software to boot up an OS (I think it is called bootstrap)
Write a simple assembler.
Write a simple OS from scratch.
I have read over the following books and many others which I cant even remember:
The Art of Assembly Language by Randall Hyde
Assembly Language Step-by-Step (The first and second edition)
Windows Assembly Language & System Programming (2nd edition) by Barry Kauler
Introduction to 80x86 Assembly Language and Computer Architecture by Richard C. Detmer.
What I have found is that each of those books introduces high level programming in low level. That is it! For example you would learn that there is no such a thing as an integer or a float, just zeros and ones (types are basically the compliers thing) and an agreed upon way to manipulate them (a protocol or a standard). You would also learn something about data alignment, control structures, opcodes, function calls, memory models, etc . a lot of things taken for granted in a high level language. That is absolutely great! I have learned how to write really fast assembly code. However, that is not what Im after.
What I want to know is how exactly does say XASMs IO functions work? How does DOS query those impossibly to query registers? How does DOS change the Instruction Counter? Where are those OS specific registers? How are they used?...stuff that books don't seem to explain, avoid to mention in the first place or say (in so many words) it is magic. I dont believe in magic
So gurus I need your help. How did you learn to do that stuff? What books/resources did you read and recommend? What are the necessary beginning steps? What is the best way to learn this stuff? Any pitfalls to avoid?
Side note: Im currently learning C so that I could try to understand the Linux C library. However, Im afraid even after I learn C, I wont fully understand the Linux C library.