Меня тут жизнь заставила потрогать компилятор XC8 от майкрочипа для мелких контроллеров. Это, я вам скажу, целый отдельный мир в себе. Зато я теперь понимаю, откуда на форумах тонны говнокода с двоичными или шестнадцатиричными константами, а разбуженный внезапно ночью пикоман будет бормотать что-то типа "0xA8 в регистр 0xBB включает режим
(
Read more... )
r = (Reg){ .abc = {.a = 2, .b = 1} };
Ну и тут картинка, чтобы понятнее было
Reply
Технически это работает, но тут поднасрал оптимизатор, точнее его отсутствие в бесплатной версии. В данном случае компилятор:
1) заводит сегмент данных с единственной анонимной переменной в которой лежит желаемый инициализатор;
2) Выделяет байт в стеке;
3) Читает байт из сегмента данных в W;
4) Сохраняет W на вершину стека;
5) Читает W с вершины стека;
6) Выбирает банк и пишет W в требуемый SFR (ура!);
7) Скукоживает всё обратно.
Reply
Leave a comment