[ragel-users] Best practice: using ragel for bit-based state machines on microcontroller?

Adrian Thurston thurston at complang.org
Fri May 15 03:10:23 UTC 2009

Ah, you can process at the bit level. See attached code. You'll probably 
want to scrutinize the generated and compiled code to see if it's good 
enough for your needs. One thing to note about using the getchar 
directive is that the expression can be evaluated more than once per 
value of p and if the compiler doesn't optimize that duplicate work away 
then your code won't be optimal.

By the way, I'm not sure if I just figured this out now, or if somebody 
told me about this technique a while back and I forgot. (Bob maybe?)


Jan Sporbeck wrote:
> Hello there!
> I'd like to use ragel to design the state machine for a microcontroller
> project (avr atmega8535) written in C.
> I think I understand how to use it for streams of char, int, etc. But
> what's the best practice to use for bit based decisions?
> I could use union..struct to pack all bits in one datatype and process
> that. But I doubt that'll yield a performant implementation.
> I read messages on this list that ragel is used for uC projects, but no
> details how.
> So any hints or example code to get me started is appreciated.
> Thanks in advance,
> /Jan.
> _______________________________________________
> ragel-users mailing list
> ragel-users at complang.org
> http://www.complang.org/mailman/listinfo/ragel-users
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: tmp.rl
URL: <http://www.colm.net/pipermail/ragel-users/attachments/20090514/9f53a039/attachment-0001.ksh>

More information about the ragel-users mailing list