W jaki sposób kod Oop, który napisałem w C++ lub C#, przenosi się na przykład na kod maszynowy lub w przypadku C# na kod bajtowy? Mam na myśli, jak obiekty tłumaczą?W jaki sposób kod zorientowany obiektowo przekłada się na kod maszynowy?
W programowaniu proceduralnym jest dość oczywiste, jak wygląda po kompilacji, ponieważ istnieje rzeczywiste wsparcie dla funkcji w języku maszynowym. Ale w przypadku programowania w języku maszynowym nie ma obiektów w języku maszynowym.
Moja teoria polega na tym, że kompiluje sam obiekt do jakiejś struktury podobnej do C, która zawiera tylko dane (bez funkcji składowych) i kiedy wywoływana jest funkcja memeber, jeśli akceptuje parametr dodatkowy, który jest strukturą danych obiektu samo. Czy mam rację?
A co z przypadkiem C++? Oba powinny wyglądać w tej samej strukturze lub układzie pamięci w końcu nie? Czy może to być więcej niż jeden sposób? Ponieważ, na przykład, możesz mieć tę strukturę również z funkcjami, ale mogę ją rozcieńczyć, ponieważ jest to mało prawdopodobne, ponieważ kosztuje więcej pamięci, jeśli obiekty powielają te same funkcje. – UnTraDe
Napisz program "hallo world" C. Skompiluj go za pomocą gcc -o hw hw.c. Problem objdump -d hw. To ta sama historia, jakie zmiany to tylko nazwy narzędzi i szczegółowe instrukcje. IOW, docelowy procesor jest inny: jest wirtualny w .net, prawdziwy w C++. –