Estou pensando em implementar uma máquina de estado finito não trivial (especificada como um gráfico hierárquico UML) em um MCU de 32 bits com gcc.
Existem regras práticas que funcionam melhor e o que funciona menos bem? Meu instinto diz que uma implementação baseada em comutador (ou mesmo computada) deve ter um desempenho ligeiramente superior, enquanto uma tabela de transição baseada em ponteiro de função geralmente tem a reputação de ser mais sustentável.
Além disso: alguém avaliou o Boost MSM para aplicativos incorporados? Eu sei que o Boost MSM é geralmente elogiado por ser muito eficiente, mas para aplicativos incorporados a eficiência pode ser medida de maneira diferente da do mundo da programação de PC.
Alguém sabe como é o mecanismo compilado da máquina de estado do MSM? Mais como uma opção de jumptable ou mais como uma tabela de transição de ponteiro de função? Ele usa alocação dinâmica de memória ou pode ser usado estaticamente?