User Tools

Site Tools


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 04:43 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki