Байтоёбства псто

Jun 20, 2021 12:49

Меня тут жизнь заставила потрогать компилятор XC8 от майкрочипа для мелких контроллеров. Это, я вам скажу, целый отдельный мир в себе. Зато я теперь понимаю, откуда на форумах тонны говнокода с двоичными или шестнадцатиричными константами, а разбуженный внезапно ночью пикоман будет бормотать что-то типа "0xA8 в регистр 0xBB включает режим ( Read more... )

rant, программизм, терминальное

Leave a comment

balmerdx June 21 2021, 10:37:47 UTC
Можно в таком виде писать. Вроде ещё с С99 поддерживается.
r = (Reg){ .abc = {.a = 2, .b = 1} };

Ну и тут картинка, чтобы понятнее было


Reply

ex0_planet June 21 2021, 11:53:49 UTC
А, я и забыл. Compound literal это называется.

Технически это работает, но тут поднасрал оптимизатор, точнее его отсутствие в бесплатной версии. В данном случае компилятор:

1) заводит сегмент данных с единственной анонимной переменной в которой лежит желаемый инициализатор;

2) Выделяет байт в стеке;

3) Читает байт из сегмента данных в W;

4) Сохраняет W на вершину стека;

5) Читает W с вершины стека;

6) Выбирает банк и пишет W в требуемый SFR (ура!);

7) Скукоживает всё обратно.

Reply


Leave a comment

Up