mégpedig: ha egy osztályalapú OS-t veszel alapul, biztosan nem kerülheted el a VMT alkalmazását, ami viszont minden egyes függvényhíváskor lassít egy picit. Talán többet mint egy szimpla "rep movsd". Ráadásul ez esetben is van egy probléma: nem tudod, és nem is tudhatod, hogy az adott OS fordításakor milyen címre linkelődik egy-egy metódus. Vagyis csak úgy, ha létrehozol egy -a metódusra mutató- adatterületet. aminek értékét átadod a megfelelő helyeken. Viszont még mindig van ezzel egy probléma. Ez pedig a méret, mert ha mindenkinek átadod ezt, akkor ők is tárolni fogják azt valahol, ami az erőforrások felesleges elfecsérléséhez vezet. Vagy mégjobb, átadunk egy mutatót, ahol ezen metódusok le vannak írva. És ezzel már gyak. létrehoztuk a VMT-t egy valamilyen osztályra. Aztán sebességbeli gondok is vannak.
mert pl egy
MOV ebx, [ebp+16*4]
call ebx
sokkal lassabb mint egy
call directcall
hívás. Nem beszélve az objektumpointerek kezeléséről, mert ott is akadnak gondok. emiatt az OO az embedded cuccokban nem véletlen nem kapaszkodott meg. Ha nem lenne sebességbeli gond, már régen abban írnák az oprenccerek zömét.
Apropó, tudod, hogy végül miért akadt el az OO-ban írt linux?