gremlinable (gremlinable) wrote,
gremlinable
gremlinable

Category:

Кстати, об оптимизации

Небольшая заметка себе на память:
допустим есть две переменные

	uint8_t i;
	uint32_t counter;

тогда операции типа

	i = (uint8_t) counter;

лучше писать в виде

	i = *(uint8_t *) &counter;

Три лишних символа в коде убирает три лишних инструкции в бинарнике, причём, эти инструкции двухтактовые, то есть общая экономия - 6 тактов процессора!
А ещё с помощью этого приёма удобно получать доступ к отдельным байтам переменной:

	buf[i] = *((uint8_t *)(&counter)+0);
	buf[j] = *((uint8_t *)(&counter)+1);
Tags: avr, gcc, программирование
Subscribe

  • AVR. Танцы с бубном успеха не принесли.

    Потерпел сегодня эпическое поражение в схватке с AVRами. Дело в том, что мы сейчас делаем экспериментальный прибор и я наткнулся на нехватку памяти.…

  • Ассемблерные вставки в AVR-GCC

    Практически всегда, когда в проекте задействованы АЦП, встаёт необходимость провести математическую обработку того, что там нацифровалось. Мат.…

  • О работе с массивами

    Когда в программе есть большой объём данных хочется для удобства собрать его в одну структуру. А в некоторых случаях в этой структуре хочется ещё и…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 8 comments