LINUX.ORG.RU

Ответ на: комментарий от anonymous

Я так понял, вы про vtbl спорите. Типичная реализация, ЕМНИП, хранит указатель на vtbl прямо в объекте, т. е. cls передаётся внутри obj. В приведённом коде vtbl используется никак(т. к. вызываемые посредством vtbl методы компилятор дропнул). Видимо, это и имелось ввиду под

[...] таблица вызовов [...] может быть как инлайном, так и реально таблицей

Но это если я правильно понял ваш диалог

Deleted
()
Ответ на: комментарий от Deleted

я там ни о чем не спорю, я в курсе за 10+лет реверса как это устроено
но щеночек вместо вопроса др анонима не vtb ли это, тогда какой смысл если не, - начал вводить какие то свои cls и раздувать объяснения

anonymous
()
Ответ на: комментарий от anonymous

Значит я не до конца понял, о чём шла речь

Deleted
()
Ответ на: комментарий от anonymous

И да, если у тебя в голове не хватает узреть, что в моём примере компилер вызовы doSomething не выкинул, то кто ж тебя вылечит-то.

AlexAT
()
Ответ на: комментарий от AlexAT

ну че я тоже могу поставить -O0 с нулевой оптимизацией и ничего не выкинет, но к чему это все ?
рассказывать о том что есть такие виртуальные таблицы ?
или городить чухню про

В случае Test1 компилятор догадался, что можно заинлайнить, и заинлайнил. А вот в случае класса-потомка уже не догадался.

?

anonymous
()
Ответ на: комментарий от anonymous

А чего подгорело-то?

Вот только сейчас посмотрел ещё раз опции. MSVC 2017, Release/x86 дефолтовый проект, /O2.

Я же выше спецом написал, что от компилера зависит. В твоём варианте компилер этот примитивный синтетический кейс свернул. VS2017 этого с /O2 не делает.

От таблиц вызовов при множественном наследовании, полиморфизме и передаче неизвестных дочек по ссылке никуда не деться.

AlexAT
()
Ответ на: комментарий от anonymous

я конечно прошу прощения, но чем бы все это посмотреть можно под линуском, под виндецомой пользовался раньше олли дбг, а чет всякими gcc -S как-то уныло выходит

da17
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.