新しいものを表示
orange さんがブースト

コメントの // F hoge, fuga みたいなのはスタックの状態のメモです><;

pastebin貼れたっぽい><
sqrtを計算するやつCIL(MSIL)版><
pastebin.com/mL2AxsQc
(シンタックスハイライトがilは流石に無いっぽいのでC# に設定しました><;)

orange さんがブースト

どこかスペース消えずにテキスト貼れるところってないかな?><;

不等号が逆だったっぽくて直したけど6桁あってる・・・?><
Sqrt(2)=1.41421294212341

done.
ExitCode:0

ilで書けました!>< 実行!>< 

Sqrt(2)=2.99999928474426

done.
ExitCode:0

・・・・?><;

ラベルの書き方間違えてた(/////

スタックの状態をメモしながらじゃないとこんがらがるけど楽しい><>< mstdn.nere9.help/media/3XQcE-d

MSILでゼロから書いて見ることにした><

Mid=ってなってる所、アセンブラで書けばMidに書かないでそのままスタックに乗せておいて、次のMid*Midって所が複製(dup)して掛ける(mul)で済むのに><;(その後もこのままのコードならpopすればLeftとかRightにMid相当の数値を直接書ける><(積む順番を工夫すればそれすら不要><;))

これ以上MSIL(CIL)にあわせた最適化ってもうどうすれば><;(逆アセンブルして見ると、Midって変数に書いたり読んだりするのが無駄に見えるけど、それをC# のコードで避ける方法って無いよね?><) mstdn.nere9.help/media/7gfib-K

オレンジが求める機能と違うっぽさ・・・><(ていうか逆に遅くなった><;)

!!!!>< -- "C# では unsafe コード内限定で、配列をスタック上に確保するための構文を用意しています。" -- unsafe - C# によるプログラミング入門 | ++C++; // 未確認飛行 C ufcpp.net/study/csharp/sp_unsa

orange さんがブースト

unsafe - C# によるプログラミング入門 | ++C++; // 未確認飛行 C ufcpp.net/study/csharp/sp_unsa

同じldloc(変数をスタックに置く)が2個並んでるところ、1個置いて複製(dup)する方が感覚としては速そう(=なんで最適化してないの?><)だけど、どうせVMだから変わらないみたいなアレなのかな?><

せっかくスタックマシンなんだから奥に(?)積んで置けば済む場面で一回変数に書いちゃうの処理勿体無い><;

sqrt計算するアルゴリズムのMSIL(CIL)向け版、「ここ直接アセンブラで書けたら命令減らせるけどC# では書きようが無い><;」ってなった><(インラインアセンブラがあったら便利だったのかも><;(実用的な意味では必要になる場面なさそう><;))

古いものを表示
:realtek:

思考の /dev/null