Take care of Segments before entering C programmed binaries
2008-05-26 01:56
302 查看
Assume that your loader is written by ASM, and your kernel is written by C. When your loader is to jump to kernel start addr, you have to set ds, es, ss to the same value. I think C language has promised that all its data after compiling will be put to the same segment, under protected mode. So, at runtime, you should promise it too. But you should know that C compiler will not set these three segment registers' values to the current segment because it won't figure out you are writing an OS (I think :)).
But there's another issue left, making ds, es, ss unique means that all your data should be put to the same segment where the kernel also exists. So it'll be too complex if you separate your kernel into an individual segment.
So, as the common solution, treat the whole 4G memory as one segment before entering kernel. Don't worry, you have chance to update GDT later:)
But there's another issue left, making ds, es, ss unique means that all your data should be put to the same segment where the kernel also exists. So it'll be too complex if you separate your kernel into an individual segment.
So, as the common solution, treat the whole 4G memory as one segment before entering kernel. Don't worry, you have chance to update GDT later:)
相关文章推荐
- Take care on the encoding of web server
- Hardware Monitoring & Trouble Shooting: take care of system cache
- Take care of the Details
- Take good care of your eyes
- some issues that you should be take care of when use the plupload module
- [2010/09/30]爱护牙齿Take Care of Your Teeth
- iPhone/iPad 2012/05/14 take care of Audio Unit
- TAKE CARE OF PERMISSIONS!
- Take care of fopen
- take care of my eyes --感人小故事
- well,take care of yourself!
- [2010/09/29]爱护牙齿Take Care of Your Teeth
- How to take care of a Portuguese Water Dog
- 【tcpdump】 especially take care of -s
- Leetcode 434 Number of Segments in a String
- How to Take Control of Your Line Height in Outlook.com
- 1104 Sun of Number Segments
- 解决 java.sql.SQLException: Before start of result set
- EVENT: DROP_SEGMENTS - Forcing cleanup of TEMPORARY segments (Doc ID 47400.1)
- PAT--1104. Sum of Number Segments