x86 CPUs have had all kinds of tricky modes and memory segmentation over the generations from 16-bit to 32-bit to 64-bit.
These days with modern OSes using modern CPUs in modern operating modes you don't have to worry about memory segments, but you can still run legacy apps on legacy OSes on the modern CPUs, in which case I presume the CPUs run in a special legacy mode (protected mode, real mode, etc).
So obviously the segment registers exist for reasons of backward compatibility, but is that the only reason?
Are there modern uses for the segment registers too? Or have they just become general purpose registers these days that merely have names reflecting their historic functions?
This question was inspired by comments on this old Stack Overflow thread: Why does the mov instruction have to be used this way?