durva hákolással tudtam csak megoldani, hogy a fordító olyan prot mode utasítást fordítson, amit majd futás közben helyesen real mode-ban hajt végre a CPU
Ami erre jól használható megoldásnak tűnt (az edk2-ben), az az volt, hogy az ilyen kódrészleteket NASM forrásban írtunk meg; ott a BITS direktívával szabadon lehetett váltogatni, hogy milyen módra fordítsa a direktívát követő utasításokat. Többféle módon is használtuk (emlékezetből írom, úgyhogy a felét se hidd el :) )
- "bin" formátumra fordult, amit nem kellett C-vel integrálni (pl. reset vector kód),
- elf64-re, amit aztán a normál x86_64 hívási konvenció szerint akartunk hívni (ebben nem volt módváltás... talán),
- szintén elf64-re, amit nem akartunk közvetlenül hívni, hanem byte tömbként akartunk futásidőben valahova bemásolni (első SMI handler, pl).
A NASM egy nagyon jó eszköz.