ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
23 ноября
1021157 Топик полностью
RxTx (26.07.2020 18:12, просмотров: 615) ответил fk0 на В пятый раз повторяю, компилятор знает и используют такое понятие как alignof/alignas для любого типа данных, у gcc есть расширение -- атрибут __attribute__((aligned(N))), по аналогии с typeof() есть __alignof __(type) (в голом C, без C++). В голом C на него можно нарваться через generics, через sizeof() тоже можно если постараться. Именно что платформо-независимый генератор кода уже всем этим оперирует. Отнюдь не бэкенд.
Ты слишком поспешно тут сделал выводы насчет "уже всем этим оперирует". Предупрежу что абсолютно точно в коде работы с атрибутами я не разбирался (хотя по аналогии с кодом/проблемой ТС ничто не мешает, просто лень/занятость). Все что ты перечислил - "тонкие нити" информации, которые 11й компилер вытягивает из констант существующих в кодогенерящем/платформозависимом BackEnd'е. 

И наоборот, backend разумеется сам по себе не работает. Он принимает на вход AST, которое сгенерировал FrontEnd. А тот может "навешивать" для backend'а разнообразные атрибуты на узлы AST-дерева . Так это и работает. Но понимаешь, несмотря на такой обмен информацией, это не означает глобальное смешение компилятора (реализующего стандарт языка) вместе с backend'ом. Они все-таки раздельны.

Ммм.. понимаешь, тебе чуть-чуть не хватает информации о построении компилера и что там за что отвечает, это тебя в нашей увлекательной дискусии и сбивает (imho). Я как-то пытался написать GCC backend для Z80 и немного его копнул, но так как я адекватно себя оцениваю, то разумеется всё это дилетантские попытки и всё это как всегда, быльем поросло. Но мне компилеростроение интересно!

Ладно. Извини, это последний мой пост. Дел много.

Спасибо, князь. Вы настоящий дворянин. И программист.