And I totally agree with your point about packing bits
and loss of
carry. The things I've done to get carry in C.
Particularly frustrating when dealing with multiple precision
arithmetic. You just *know* that if you were writing it in
ASM, the carry would be there "for free". Yet, you have
to add a separate step to deliberately synthesize it in C
(or, change the fundamental algorithm that you use -- which
just obfuscates that little detail)
Sort of like converting to decimal:
digit = value % 10;
value /= 10;
whereas if you were writing it in ASM, both results would
be available to you in the same operation (though, with
access to ASM, you would probably use a faster algorithm!)