是否可以区分反编译代码和手写代码?

问题描述

在我的一个CS课中,我的老师叫我参加一次变焦会议,并指责我将C代码反编译为AT&T x64汇编语言。我没有反编译我的代码,所以我很困惑。

有没有办法区分手写代码和反编译代码?我想知道,这样我就不会意外地以某种似乎反编译的方式编写代码...

解决方法

是的,我们可以说。没关系时,人们会将东西组织成逻辑块,因此逻辑按顺序发生,寄存器分配按顺序发生,等等。另一方面,当指令顺序无关紧要时,编译器会随意分配东西。以伪随机顺序发出指令,等等。

但是,我们可以一目了然地从反编译的代码中学习汇编的人告诉手写的汇编代码。编译器将使用太高级的技巧,而这些技巧只是在初级课程中没有讲授的。基本上,如果我们发现有人不赶不走作业和考试太早了,那就反编译了。

从历史上看,这是相反的,直到15年前,我们才像新手一样嘲笑编译器的程序集。不再。现在,编译器是专家。