I'm focussing on code written in C... So... If you have a project *just exceeding* 1024 Bytes, some of these ideas may be useful for squeezing a little more outta it.

Before looking here, maybe check this document first. (Thanks, [Volt], in the comments!)

The following may just be utterly-ridiculous... I'm no expert, here... And this list is in no way sorted, nor all-inclusive, and may in fact be missing some *really* important things like using lookup tables rather than math, and using direct register-writes rather'n libraries (e.g. see @Radomir Dopieralski's logs over at #Nyan Board and #Mechatronic Ears)

Take the ideas here with a grain of salt!

I'll probably aim my efforts at AVRs, but there are *definitely* some concepts, here that apply, as well, to other architectures (and some that don't apply *at all* to AVRs) So... steal some ideas!

Oh, and, Good Lord... @Yann Guidon / YGDES pointed out something quite important...

This shizzle is in *no way* intended to be considered "good practice". Don't get into these habits! Don't use these as general-purpose guidelines of any sort! And, for goodness sake, don't use these techniques in any sort of "product" (library, operating-system, pace-maker, or anything else) unless you've *really* thought-through *all* the potential-consequences, slept on it for months, then thought through them again. But, realistically, that goes for any sort of coding, whether you use these techniques, or not.

Fergodsakes, we're talking about a friggin' contest, here. It's supposed to be *fun* and encouraging of creativity. And this "project-page" is intended for no other purpose than to allow a creative person to continue with their fun project once they've hit what might otherwise seem like a show-stopping ceiling.

Calculate your (AVR) project's program/flash-memory requirements via "avr-size":


Squeeze some bytes out of your project by (in no particular order):

Think Outside The Box -- yahknow, that little plastic box with all the pins on it:

Prepping For Limited Code-Space:


I can't promise I'll have the patience to throw updates here, every time I throw something into the logs... So be sure to check those!