I have a question regarding the memory models. As far as I know under windows, CS and DS "overlap" i.e. they have the same base address in the LDT.THe consequence is thatit is possible to dynamically generate code as data (thunking) and execute it.
My question is: is there a good reason why is mechanism built into IA32 since x386 not being used? in my mind, if entries in LDT for CS, DS and SS had different bases, with proper limits,there would be no possiblity of executing data or segment at all, thus improving security.
Are there any OS-s that run on intel platforms that actually separate those segments?