W jakim stopniu Itanium ABI naprawdę określa wyściełanie i wyrównanie?
Zostało mi powiedziane:
[ABI] gwarantują dokładny układ struktury, przesunięcie bajtów każdego elementu, które bity są używane dla pól bitowych, gdzie i ile jest wypełnienia itd. ...
Ale zawsze wierzyłem, że dopełnienie i wyrównanie były nieokreślone i zawodne.
RobiItanium ABI (którego GCC używa) faktycznie określa te rzeczy (o ileI móc powiedzieć,nie wydaje się poza określeniem zakresów)?
A jeśli tak, to jak mają się opcje__attribute__ ((packed))
dopasować się do tego? Czy ostatecznie przełamują ABI, zmieniając wyrównanie rzeczy?
Lub, jak sugeruje cytat, pakowanie jest nieokreślone między narzędziami, ale w rzeczywistości niezawodne imożliwy do przewidzenia w ramach korzystania z pewnego ABI? A potem znowu, jak coś takiego__attribute__ ((packed))
dopasować się do tego?