Как стать автором
Обновить

64-битных переменных для банковского счёта «хватит всем»?

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров3.9K
Всего голосов 22: ↑22 и ↓0+22
Комментарии6

Комментарии 6

rsisete    alret

Отсутствие переводов строк в таблице - просто офигенно.

ps: А кто мешает использовать типы целых с переменной длинной (как строки)?

Ну а здесь "128 бит хватит всем". Уж простите, но я за PostgreSQL decimal с его 131072 цифрами до десятичной точки и 16383 - после. В принципе, пропатчить можно и на больше. Просто никому не надо было.

Похоже, ошибка в алгоритме a==b
Недостаточно проксорить между собой все 4 64-битных компонента и сравнить с нулём.
Хотя, ошибка очень коварная, т.к. будет возникать крайне редко.

Может там третья операция должна быть or      rdi,rsi?

А то, и мне кажется, что оригинальный код может сбойнуть. Скажем a=0100-0000b и b=0000-0100:
1. 0100 xor 0000 = 0100 -> rdi
2. 0000 xor 0100 = 0100 -> rsi
3. 0100 xor 0100 = 0000 -> sete al = 1

Просто перевод строки не там поставили. "x" должно было быть у "rdx" а не у "or"

xor     rsi,rcx
xor     rdi,rdx
or      rdi,rsi
sete    al
ret

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации