Why was 0x08048000 chosen as the initial execution address for ELF binaries, at least in Linux? It is such a strange number, very round but not too round.
I've Googled it but just haven't been able to find anything on that question in the mass of returned results.
Why 0x08048000?
-
- Member
- Posts: 52
- Joined: Mon Oct 11, 2010 11:37 pm
- Location: Milwaukee, Wisconsin
Why 0x08048000?
Microsoft is over if you want it.
- Love4Boobies
- Member
- Posts: 2111
- Joined: Fri Mar 07, 2008 5:36 pm
- Location: Bucharest, Romania
Re: Why 0x08048000?
First Google hit: http://his.luky.org/ML/linux-kernel.2002/msg12171.html
"Computers in the future may weigh no more than 1.5 tons.", Popular Mechanics (1949)
[ Project UDI ]
[ Project UDI ]
Re: Why 0x08048000?
Damn, I always though Linux was a Higher Half Kernel
Re: Why 0x08048000?
Hi,
I'm not too sure exactly where the Linux kernel is mapped on 32-bit systems (I think it depends on compile-time settings). It might be at 0x80000000 in some/most cases (which is easy to confuse with 0x08000000 - maybe a typo was involved).
Cheers,
Brendan
Linux is a higher half kernel. They're looking at normal processes that start at virtual address 0x08048000, and the person that said "The kernel is mapped into the virtual address-space below about 0x08000000." is wrong (if that was the case, then the kernel would be overwritten by processes).Nessphoro wrote:Damn, I always though Linux was a Higher Half Kernel
I'm not too sure exactly where the Linux kernel is mapped on 32-bit systems (I think it depends on compile-time settings). It might be at 0x80000000 in some/most cases (which is easy to confuse with 0x08000000 - maybe a typo was involved).
Cheers,
Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
-
- Member
- Posts: 52
- Joined: Mon Oct 11, 2010 11:37 pm
- Location: Milwaukee, Wisconsin
Re: Why 0x08048000?
Thanks, but (as others have pointed out) the Linux kernel is mapped well above this address, at either 0x8000_0000 or 0xC000_0000.Love4Boobies wrote:First Google hit: http://his.luky.org/ML/linux-kernel.2002/msg12171.html
The address in question is 0x0804_8000. Why was such a weird address chosen? Maybe it was chosen by someone fond of the Intel 8048 microcontroller? (Yes, I know that is really stretching!)
Microsoft is over if you want it.
Re: Why 0x08048000?
The address appears in the System V i386 ABI, I've been able to trace it back that far. No idea on the reason, though.
Sidenote: This would be better posted to LKML or Stackoverflow. Don't expect hard answers, though, this question has been around before...
Sidenote: This would be better posted to LKML or Stackoverflow. Don't expect hard answers, though, this question has been around before...
Every good solution is obvious once you've found it.