IL

ILレベルでのデバッグ方法

IL

そうそう使わないけど、逆アセンブラとの兼ね合いで欲しくなることもあるので、備忘録的に。。。やり方は、難しくは無いけど若干面倒。仕込み方は以下の通り。 VisualStudio コマンドプロンプトを起動する Current directoryをコンパイルの成果物があるDirec…

ホントに、tail.は遅いのか?

IL C#

前回、前々回とF#や、C#、果てはILまで追っかけつつ検証してきた、tail.なワケですが、tail.有りと無しで果たしてどれほどの差があるのか? んでもって、条件により結果は変わってくるのか?てーコトを検証してみた。 ただ、C#では例え末尾再帰に合致したと…

tail.の復活

F# IL

昨日のエントリで、いらない子扱いされてしまって、枕に涙を塗らしていた*1tail.プレフィクス。F♯のコンパイラオプションでは明示しなければ使ったもらえず、以下のようなコードの場合でも、スタックフレームを1個除去できるかどうかだけで、ほぼあんたの居…

tail.プレフィクスがいらない子扱いされている件

C# F# IL

C♯というか、.NETのExpressionで末尾最適化がかかった形のモノが出来ないかどうか調べていて詰まったので*1F♯の末尾再帰ってコンパイルの時どうなってるのか調べてみたら表題の通りで。最も今回の例はとても単純なサンプルとなっているので、条件によっては…

ExpressionTreeとClojure

コトの始まり ふつーのDelegateでClojureが実現可能なのは、知ってたし、中でどーなってるのか大体理解してたけど、ExpressionTreeの場合、そもそも出来るのか?出来たとして、どーなるのか?て部分が気になったので何となく調べてみた。 使ったサンプルコー…

初期化子に関する一考察

C# IL

ClosureのIL眺めてたとき、ちょっと気づいた。詰まることはないと思うし、動作結果が一致してるけど、コンパイラの生成するILが不一致なのでとりあえずまとめておこうかと。 今回使ったサンプルクラス public struct sampleStr { public int Val { get; set; } } …