難読化されたC#とJavaの逆コンパイルは、StringなどのフレームワークAPIへの呼び出しの存在によって単純化されると言われています。しかし、これは私にはまったく意味がありません。なぜなら、Cプログラムには、C#apiと同等のいくつかの標準ライブラリへの明白な呼び出しもあるべきではないからです。
また、逆コンパイルの複雑さには、レジスタマシン(Cからアセンブリを実行するハードウェア)とスタックマシン(バイトコードを実行する仮想マシン)の区別が重要であると言われています。
それで、スタック/レジスターマシンの問題はここで主なものですか?CLR仮想マシンがレジスタマシンとして再実装された場合、C#バイトコードはC実行可能ファイルと同じように突然逆コンパイルが困難になるでしょうか?または、そのようなプラットフォームのオーバーホールで解消されない他の主要な複雑さの違いはありますか?