I am trying to understand the implementation of process segments in 64-bit architectures. I came across these 2 discussions:
64 bit application: layout in memory
Process segments(stack,heap,data and code) are contiguous in memory?
However, I am still unclear. Segmentation was introduced to overcome the limits of using 64K memory with 16-bit addresses, in the Intel 80286/80386 days. After that 32-bit Intel machines still continued it for compatibility reasons.
Now moving onto 64-bit: The manuals say that segmentation is rarely implemented here (ref: http://en.wikipedia.org/wiki/X86_memory_segmentation). The virtual memory and paging can provde access to the entire address space alongwith protection.
So my question is: How is a 64-bit program compiled by 64-bit compilers? Do they still use the concept of "segments" (because I still see the mentions of data segment, stack segment, etc) as was before, but with higher # bit segment pointers? Or, is the word "segment" referring to something completely different for 64-bit architectures?
Any help is appreciated.