Puedes jugar con algo con graphviz y punto. Esas son las herramientas que doxygen utiliza para crear los diagramas. No es exactamente lo que estás buscando, pero es rápido y fácil de script y el resultado es bastante bonito (aunque es un poco difícil seguir algunas líneas...)
Este ejemplo generará algo así
Para ello, primero hay que crear un archivo llamado byte.dot
digraph structs {
node [shape=plaintext]
struct1 [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" ALIGN="left">
<TR>
<TD>0xc9</TD>
<TD PORT="f0"> 1 </TD>
<TD PORT="f1"> 1 </TD>
<TD PORT="f2"> 0 </TD>
<TD PORT="f3"> 0 </TD>
<TD PORT="f4"> 1 </TD>
<TD PORT="f5"> 0 </TD>
<TD PORT="f6"> 0 </TD>
<TD PORT="f7"> 1 </TD>
</TR>
</TABLE>>];
struct2 [label=<
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" >
<TR> <TD ALIGN="left" PORT="f0"> RSTDISBL (reset pin is enabled) </TD> </TR>
<TR> <TD ALIGN="left" PORT="f1"> WDTON (WDT not always on) </TD> </TR>
<TR> <TD ALIGN="left" PORT="f2"> SPIEN (allow serial programming) </TD> </TR>
<TR> <TD ALIGN="left" PORT="f3"> CKOPT (full output swing) </TD> </TR>
<TR> <TD ALIGN="left" PORT="f4"> EESAVE (don't preserve EEPROM over chip erase) </TD> </TR>
<TR> <TD ALIGN="left" PORT="f5"> BOOTSZ1 </TD> </TR>
<TR> <TD ALIGN="left" PORT="f6"> BOOTSZ0 </TD> </TR>
<TR> <TD ALIGN="left" PORT="f7"> BOOTRST (boot reset vector at 0x0000) </TD> </TR>
</TABLE>>];
struct1:f0:s -> struct2:f0:w;
struct1:f1:s -> struct2:f1:w;
struct1:f2:s -> struct2:f2:w;
struct1:f3:s -> struct2:f3:w;
struct1:f4:s -> struct2:f4:w;
struct1:f5:s -> struct2:f5:w;
struct1:f6:s -> struct2:f6:w;
struct1:f7:s -> struct2:f7:w;
}
A continuación, ejecute uno de esos comandos.
dot -Tpng byte.dot -o byte.png
dot -Tps byte.dot -o byte.ps
¿Quizás sea más bonito si no cruzamos todas las líneas del medio?
Acabo de cambiar el nombre de la segunda tabla de f0..f7 a f7..f0.
<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" >
<TR> <TD ALIGN="left" PORT="f7"> RSTDISBL (reset pin is enabled) </TD> </TR>
<TR> <TD ALIGN="left" PORT="f6"> WDTON (WDT not always on) </TD> </TR>
<TR> <TD ALIGN="left" PORT="f5"> SPIEN (allow serial programming) </TD> </TR>
<TR> <TD ALIGN="left" PORT="f4"> CKOPT (full output swing) </TD> </TR>
<TR> <TD ALIGN="left" PORT="f3"> EESAVE (don't preserve EEPROM over chip erase) </TD> </TR>
<TR> <TD ALIGN="left" PORT="f2"> BOOTSZ1 </TD> </TR>
<TR> <TD ALIGN="left" PORT="f1"> BOOTSZ0 </TD> </TR>
<TR> <TD ALIGN="left" PORT="f0"> BOOTRST (boot reset vector at 0x0000) </TD> </TR>
</TABLE>>];