PB编译器出现低概率的编译错误

在研究反编译的过程中(PB反编译大师从这里下载),发现PB 12.1 6875编译的一个文件,本意要实现如下代码

参数:encoding e

string s
long len

choose case  e

      case encodingansi!
            s = "xxxx"

      case encodingutf8! 

            s = "xxxx"

      case else

            s = "not support"

end choose

return s

在第三个case分支是,操作码应该是

get_var(s)                  //第三个case(case else)

get_string("not support")          //第三个case

convert_string("not support")         //第三个case

Assign_string(s = "not support")         //第三个case

get_var(s)     //返回语句

convert_string(s) //返回语句

return_var(s)  //返回语句

但是实际反编译发现,编译出的pbd中的代码有丢失和错乱,具体为:

get_string("not support")        //第三个case

get_var(s)         //返回语句

convert_string(s) //返回语句

return_var(s)  //返回语句

其错误在于丢失第三个分支,而且仅仅剩下get_string("not support") 一个操作码

这个导致运行时错误或者崩溃. 这个文件样本来自国外一个很出名的PB编写的软件。

 

过去的分析,也发现其他的版本中存在这样的低概率的莫名的错误。

 

 

你可能感兴趣的:(PB编译器出现低概率的编译错误)