レス数が1スレッドの最大レス数(10000件)を超えています。残念ながら投稿することができません。
管理人の独り言5
-
前スレ:
管理人の独り言4 - 黒歴史集積所
http://jbbs.shitaraba.net/bbs/read.cgi/computer/38153/1414980126/
-
Urabe, Shyouheiさんのツイート: "UINT64_MAXを超えそうになったらUINT64_MAXに貼りつく++(つまりoverflowしない)が欲しい。Cで。アセンブラならフラグ見りゃ一発だが。Cにフラグないからな。"
https://twitter.com/shyouhei/status/758475876384313344
-----
(1) if (++a == 0) a = UINT64_MAX;
(2) ++a; a |= -(a == 0);
だと,自分の環境で(1)が1.65倍ぐらい早い.
-
(1)
000000013F3A1190 add rsi,1
000000013F3A1194 cmove rsi,rbx
(2)
000000013F3A12F0 add rbp,1
000000013F3A12F4 mov eax,0
000000013F3A12F9 sete al
000000013F3A12FC neg eax
000000013F3A12FE cdqe
000000013F3A1300 or rbp,rax
みたいな感じ.
-
main.cpp
https://gist.github.com/ACUVE/f8c98491846c130921c70961e404f078
-----
ソース.
|
|
掲示板管理者へ連絡
無料レンタル掲示板