ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
23 июля
898913
Dingo (25.01.2019 05:26 - 05:30, просмотров: 2325)
Может не очень умный вопрос, но всё же: а можно без ассемблера понять, когда при сложении было переполнение? Аналог флажка carry так сказать. Ну или букварь соответствующий порекомендуйте. NTP timestamp не что иное, как fixed point 32.32 Через int64_t работает как-то странно, stm32f407; уже и оптимизацию до "1" убирал - всё равно. Ну и про умножение "вручную" что-нибудь можно сразу: скорее всего пригодится. bool ntp_ge( ntptime_t op1, ntptime_t op2) // operator >= { uint64_t val1, val2; val1 = op1.fraction + (uint64_t)op1.seconds<<32; val2 = op2.fraction + (uint64_t)op2.seconds<<32; return( val1>=val2); } На тесте выдаёт "козью морду".
TEST
Arg1: $0000000C.FACC0DE0, $0000000B.F9CC0DE0 => 1
Arg1: $0000000C.FACC0DE0, $0000000B.FACC0DE0 => 1
Arg1: $0000000C.FACC0DE0, $0000000B.FBCC0DE0 => 0
Arg1: $0000000C.FACC0DE0, $0000000C.F9CC0DE0 => 1
Arg1: $0000000C.FACC0DE0, $0000000C.FACC0DE0 => 1
Arg1: $0000000C.FACC0DE0, $0000000C.FBCC0DE0 => 0
Arg1: $0000000C.FACC0DE0, $0000000D.F9CC0DE0 => 1
Arg1: $0000000C.FACC0DE0, $0000000D.FACC0DE0 => 0
Arg1: $0000000C.FACC0DE0, $0000000D.FBCC0DE0 => 0
Это решил, теперь с арифметикой засада.