Да. Распинал и на остальное: uint64_t val1, val2;
val1 = (uint64_t)op1.fraction + ((uint64_t)op1.seconds<<32);
val2 = (uint64_t)op2.fraction + ((uint64_t)op2.seconds<<32);
return( val1>=val2);
Ну или так наверное можно(не проверял):
val1 = ((uint64_t)op1.seconds<<32) + op1.fraction;
Однако переполнение и умножение, результат которого занимает сумму сумму бит сомножителей, всё ещё интересно.
Пытаюсь найти аппнот по фиксированной точке от Техаса, где подобное было - не могу найти! :-(
По сложению только следующий костыль пока придумал: запоминать максимальное из слагаемых, и если результат меньше, то переполнение было. Но операций это добавляет ...
Умножение, мысли:
A3A2.A1A0
B3B2.B1B0
-------.--------
.A3A2A1A0 * B0
A3.A2A1A0 * B1
A3A2.A1A0 * B2
A3A2A1.A0 * B3
=================