the compiler would have to be able to handle "far" pointers - pointers to data in other segments that include the segment and offset, but it could still be made to work. a far pointer would likely be 48 bits on 32-bit x86 or 80 bits on x86-64, but there's no reason why it couldn't be made to work, and I'm sure there are platforms where they do exactly that.