I'm not quite sure of the question, but for the most part any change above 32 bits will be basically transparent. The movement from 16: to 16: was hard, mostly because you went from a segmented address space to a flat or page table address space. The later was harder to setup the memory system but once it was done it was smooth sailing. There are times when casting absolute integer+offset to page based pointers can cause problems but for the most part if you use the  instead of the *() for pointer referencing, you will have no problem. Since CISC supports seg:[reg+reg*4] and seg:[reg+reg*8] changing the stride value on arrays should be easy.
EDIT: Spelling and Grammar
Complicated proofs are proofs of confusion.<P ID="edit"><FONT SIZE=-1><EM>Edited by Schmide on 10/03/02 12:33 PM.</EM></FONT></P>