В примере с множественным наследованием компилятор порождает следующие функции:
| pkg_alignment | возвращает “4” - выравнивание для Alpha |
| pkg_alignment_2 | возвращает “4” - не используется |
| pkg_alignment_3 | возвращает “4” - выравнивание для Gamma |
| pkg__T548s | переходник к pkg_alignment_3 для Gamma |
| pkg_size | возвращает “64” - размер для Alpha |
| pkg_size_2 | возвращает “32” - не используется |
| pkg_size_3 | возвращает “128” - размер для Gamma |
| pkg_T539s | переходник к pkg_size_3 для Gamma |
| pkg_Oeq | сравнение для Alpha |
| pkg_Oeq_2 | не используется |
| pkg_Oeq_3 | сравнение для Gamma |
| pkg_T557s | переходник к pkg_Oeq_3 для Gamma |
| pkg_assign | присваивание для Alpha |
| pkg_assign_2 | не используется |
| pkg_assign_3 | присваивание для Gamma |
| pkg_T566s | переходник к pkg_assign_3 для Gamma |
| pkg_elabs | инициализация таблиц-диспетчеров и описателей типа |
| pkg_alphaIP | не используется |
| pkg_betaIP | не используется |
| pkg_gammaIP | не используется |
Переменные в сегменте .data:
| pkg_alphaP | 4 байта | адрес pkg_alphaT + 12 |
| pkg_betaP | 4 байта | адрес pkg_betaT + 12 |
| pkg_gammaP | 4 байта | адрес pkg_gammaT + 12 |
| pkg_pkg_gamma0P | 4 байта | адрес pkg_T281s + 12 |
| pkg_alphaF | 1 байт | значение 01h |
| pkg_betaF | 1 байт | значение 01h |
| pkg_gammaF | 1 байт | значение 01h |
| pkg_alphaE | 13 байт | строка “PKG.ALPHA” |
| pkg_betaE | 13 байт | строка “PKG.BETA” |
| pkg_gammaE | 13 байт | строка “PKG.GAMMA” |
| pkg_E | 1 байт | строка “” (пустая) |
Переменные в сегменте .bss:
| pkg_alphaT | 76 байт |
| pkg_betaT | 16 байт |
| pkg_gammaT | 84 байт |
| pkg_T281s | 76 байт |
| pkg_alphaB | 44 байта |
| pkg_betaB | 40 байт |
| pkg_gammaB | 52 байт |
| pkg_T282s | 12 байт |
Здесь:
| F | флаг необходимости регистрации тэгового типа |
| E | внешнее имя типа |
| T | таблица-диспетчер (Dispatch Table) |
| B | описатель типа (Type Specific Data) |
| P | указатель на таблицу-диспетчер (тэг) |