neni zac :) technicky je to riesene tak ze v GDT (tabulka segmentov pamate) mozu byt definovane kodove segmenty 64bit alebo 32bit, a CPU podla toho vie ze ci v tom segmente su 32bit instrukcie alebo 64bit instrukcie. A moze sa medzi nimi vkuse preskakovat hore dole.
Technicky to je do detailu napr. tuto (najdene googlom ale vidim ze to je uplne presne do detailu):
http://www.codeproject.com/Articles/45788/The-Real -Protected-Long-mode-assembly-tutorial-for
preskakovanie medzi long a compatible je popisane uplne na konci ("Returning to Compatibility Mode")