Udon VM 向けのコンパイラを作ろうとしている[2]
@Ram_Type64_Mod0 いえす、そんな感じ private なやつはシンボル一覧から取れないだけでアドレスさえわかればなんでも入れられる/JUMPに使ってるならうまくやればどこにでも飛べそうだよ、ACEは多分できないと思うけど……
2019-12-21 20:59:17@cannorin_vrc UDONSDK-2019.12.19.18.37_Publicしか入れてない!
2019-12-21 21:02:52@cannorin_vrc あとまあこれ思ったのが無駄にアドレスuintにしてる癖に即値じゃないアドレス値をスタックにプッシュできないのでuintのアドレスが息をしていない
2019-12-21 21:06:59@cannorin_vrc できないはずと思いつつも試してみたらエラーも出ないし実行したらログもちゃんと出てきたのでできるらしい pic.twitter.com/oY4bkU8l6L
2019-12-21 21:07:29@cannorin_vrc @madorama_vrc アセンブリとバイトコードで仕様が違うのでは バイトコードの仕様だとそもそも変数名じゃなくて全部アドレス即値指定だし
2019-12-21 21:15:44@cannorin_vrc エラー見た感じ少なくともInt32,Single,String(画像にはないけどDoubleも)辺りは特別な処理してる気配がある pic.twitter.com/1P4rpGx6cv
2019-12-21 21:15:59@Ram_Type64_Mod0 @cannorin_vrc @madorama_vrc ちがうよ、細かいとこまでは調べきれてないけど
2019-12-21 21:21:14@Ram_Type64_Mod0 @cannorin_vrc @madorama_vrc あれ、でもintしたときコケたけどなんだろう
2019-12-21 21:22:24@sora_sakaki_vrc @cannorin_vrc @madorama_vrc code部の即値にintリテラルだとアドレスとして解釈されるとかじゃないの data部ならアドレスだと勘違いすることはないし
2019-12-21 21:23:50@Ram_Type64_Mod0 @cannorin_vrc @madorama_vrc まぁよくわかんないけどその時のエラーメッセージはthisかnullしか初期化できないだった できてるならいい話
2019-12-21 21:25:40@sora_sakaki_vrc n uでheapのn番目を参照してEXTERNできるっぽいし、String literalをPUSHしたらheapの末尾に追加されるっぽい?
2019-12-21 21:47:20@madorama_vrc たぶん、data領域のやつをheapにつめたあとstringリテラルを詰めてますね、挙動見た感じ。 で、これはdata領域がないので0番は初めにpushしたリテラルになります。 デバッガでassembleしてるとこにbreakpointいれるといいですよ
2019-12-21 21:51:30同じ文字列をPUSHしたらちゃんと同じアドレスを指してくれた pic.twitter.com/YxCi5GthIH
2019-12-21 21:53:49@madorama_vrc @cannorin_vrc もしかするとboolつかったjumpがあるからbooleanも特殊な処理があるかも
2019-12-21 21:59:10@sora_sakaki_vrc 未初期化値アクセスチェックとかコンパイラ側でやるべきなことやってる癖にjumpのせいでバイトコードのオペラントに飛んだらアドレス値が命令として実行されるガバ仕様
2019-12-21 22:08:06