lang:gamma-ada-asm
Подробности кода GCC Ada
В примере с множественным наследованием компилятор порождает следующие функции:
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 | указатель на таблицу-диспетчер (тэг) |
lang/gamma-ada-asm.txt · Last modified: 2006/06/14 11:43 by 127.0.0.1