Qiita 7 - キータぞ、来たぞ、キータだぞー (768レス)
1-

281
(1): 2025/10/10(金)21:12 ID:ckTDD7bx(6/7) AAS
>条件フラグを変更せず保持したまま演算を行ないたいことが多いんだよ。
>そのため条件フラグを変更しない演算命令が一部用意されていて、それらが活用されている。
 
知らないこと想像で書いてて大変宜しいw
282: 2025/10/10(金)21:29 ID:EwscZStB(2/4) AAS
>>280
理解できていないようだけど、
演算命令の順序が固定かつシリアル化されてしまうことが大きいんだよ。
命令順序の入れ替えは最適化の基幹であるとともに、並列展開もできなくなってしまう。
さらに条件フラグの保存コスト問題も生じてしまう。
283
(1): 2025/10/10(金)21:32 ID:EwscZStB(3/4) AAS
>>281
x86など使ったことある人には常識だけど、
条件フラグの更新を伴う加算と伴わない加算としてADD命令とLEA命令の使い分けをコンパイラも多用しているよ。
それ以前の演算で反映された条件フラグを変化させないまま、
LEA命令によって加算や一部の乗算及びその組み合わせ演算をできる利点があるためだよ。
284
(1): 2025/10/10(金)23:12 ID:ckTDD7bx(7/7) AAS
実例挙げられない辺りが限界なんだろうなあw
285: 2025/10/10(金)23:19 ID:EwscZStB(4/4) AAS
>>284
実例を既に>>283で挙げたよ。
もしかしてアセンブラ使ったことすらなくて理解すらできなかった?
286: 2025/10/10(金)23:42 ID:SqpOO1WH(2/2) AAS
どのコンパイラがどういうコード吐いてるかも示せないで実例とか言ってるのはたまげたなw
287: 2025/10/11(土)00:12 ID:e8fGXa5a(1) AAS
ADDではなくLEAでフラグ変化させずに加算演算するのは手動でもコンパイラでも基本
この常識を理解できない低レベルな人はコード書いたりコンパイラ生成コードを見たことすらない人
288: 2025/10/11(土)10:05 ID:mX/iHQDj(1/2) AAS
コンパイラが出力した「条件フラグを変更せず保持したまま演算を行なう」コードの実例から逃げてるとこ見ると「LEAで加算ができる」が知識の限界の人かな
289: 2025/10/11(土)10:12 ID:mX/iHQDj(2/2) AAS
> コンパイラ生成コードを見たことすらない人
 
このスレでCompiler Explorerのアドレス貼ってる人は珍しくないので(>>150とか)同様にして見せてやれば良い。
290
(1): 2025/10/12(日)03:13 ID:obnnOjq+(1) AAS
Rust信者ってこんなもんだなあとういうのはまあ納得
291: 2025/10/12(日)03:35 ID:Iv4aWOmO(1) AAS
Rust?
関係ないだろ
292: 2025/10/12(日)05:25 ID:D80drn0C(1) AAS
マシン語にするプログラミング言語は最適化によって意図と違うコードになることがあるという話をしたいんだろ。
293: 2025/10/12(日)12:59 ID:EE9svh1n(1/2) AAS
> Rust?
> 関係ないだろ

>>275からの話の流れが理解できない人かな
294: 2025/10/12(日)19:07 ID:txsY3oX4(1/2) AAS
>>275
このRustプログラムが最適化あり(リリースビルド)/最適化なし(デバッグビルド)で挙動が変わる理由は、i8型の符号付き整数オーバーフローの扱い方が状況によって異なるためです

最適化なし(デバッグビルド)
sum += numで加算の結果がi8の範囲(-128~127)を超えてしまうと、panicになるため意図した出力が得られず、エラーが発生します

最適化あり(リリースビルド)
オーバーフローのチェックが省略されて二の補数によるラップアラウンド(桁あふれの結果として範囲内に収める計算)が行われます
295: 2025/10/12(日)19:15 ID:txsY3oX4(2/2) AAS
リリースビルド(最適化あり)でもオーバーフローを検出し、デバッグビルド(最適化なし)と同じ挙動にする方法があります

Cargo.tomlに以下を追記します:
[profile.release]
overflow-checks = true

リリースビルドでも整数オーバーフローが発生するとpanic(異常終了)になります
296: 2025/10/12(日)20:41 ID:VrekPvIE(1/2) AAS
デフォで安全側に倒してない時点で残念言語だな
297: 2025/10/12(日)21:03 ID:UHx3WDzt(1/2) AAS
オーバーフローでプログラムを中断したいのか
オーバーフローをエラーとして返したいのか
オーバーフローを値として受けて活用したいのか
オーバーフローは影響しない処理なのか
一般的に様々な状況が考えられる
これは安全性の問題とは関係がない
298
(1): 2025/10/12(日)21:59 ID:VrekPvIE(2/2) AAS
> オーバーフローでプログラムを中断したいのか
> オーバーフローをエラーとして返したいのか
> オーバーフローを値として受けて活用したいのか
> オーバーフローは影響しない処理なのか
> 一般的に様々な状況が考えられる
 
話についてこれない人かな
299: 2025/10/12(日)22:06 ID:UHx3WDzt(2/2) AAS
>>298
オーバーフローをどう処理したいかはプログラミングの内容に依って変わる
これは安全性の問題ではない
300: 2025/10/12(日)22:47 ID:EE9svh1n(2/2) AAS
オーバーフローを無視して処理を続けていいわけはないので安全性の話なんだよなあ
何言ってんのこの人w
1-
あと 468 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.025s