[過去ログ]
C#, C♯, C#相談室 Part96 (1002レス)
C#, C♯, C#相談室 Part96 http://mevius.5ch.net/test/read.cgi/tech/1639965805/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
142: デフォルトの名無しさん (ワッチョイ 1232-IMun) [sage] 2022/03/15(火) 21:00:09.00 ID:ZTE9InWz0 >>137 JIT最適化を抑制せずF11でデバッグして逆アセンブルすると 先にConsole.WriteLine(Boolean)がTrue固定で呼び出されて その後にMarshal.IsNullOrWin32Atom(IntPtr)となってるね 未定義動作はタイムトラベルを…彷彿とさせるがC#なんだよなぁ MSIL的にも&とnative intの結果型は&に定められている筈だし とはいえ、管理下ポインタはnullになりえないとか有った気もするし null参照への演算が未定義なら道理なのかもしれない、あるいはバグか http://mevius.5ch.net/test/read.cgi/tech/1639965805/142
147: 142 (ワッチョイ 1232-IMun) [sage] 2022/03/15(火) 21:41:55.33 ID:ZTE9InWz0 あー同じような判定コードを読み間違えた タイムトラベルは起きてないけど、代入もヌル判定もなくなってる感じかな >>144 そう、片方が0なら実質意味はないから加算命令が現れなくても不思議ではないけど Console.WriteLine(x);としてみても固定アドレス0をデリファレンスするので xが常にぬるぽ扱いになってしまっている様ではある C#的には未定義なら未定義でビルド時か実行時にエラーを出しそうだけど Unsafeでチェックされないのか判断に困る。さもなければ最適化のバグだと思う http://mevius.5ch.net/test/read.cgi/tech/1639965805/147
152: デフォルトの名無しさん (ワッチョイ 1232-IMun) [sage] 2022/03/15(火) 23:25:37.07 ID:ZTE9InWz0 >>149 件の部分はJITコンパイルされたマシンコードの話で、ref intを参照する際に xからでなくても「mov ecx, dword ptr [ptr]」的であっても整合性は取れるが 逆アセが「mov ecx, dword ptr [0]」になるので、xはnullにされてるという話 それならばIsNullRefが消えるのは順当としても、xがnullになる代入の欠落が NullRef<int>が宜しくないのか、それをAddByteOffsetに与えるのがダメなのか 単なるバグか…、Unsafe.AsRefに直接IntPtr渡せれば/unsafeとせず済むのにね http://mevius.5ch.net/test/read.cgi/tech/1639965805/152
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.037s