从汇编语言翻译到c语言中应该注意的问题

我们在写注册机的时候,经常会从汇编语言翻译到c语言代码。

我们先看看一个比较短和简单的函数

从汇编语言翻译到c语言中应该注意的问题_第1张图片

反编译如下: (热键F5):

从汇编语言翻译到c语言中应该注意的问题_第2张图片

可以看到产生的c代码比较合理,但是不完美。看上去有点乱,这是应为反编译不能执行类型恢复。显然,a1参数是指向一个结构体的指针。让我们增加一些数据类型看看发生什么。我们打开Structure windows(Shift-F9),增加一个结构体。

从汇编语言翻译到c语言中应该注意的问题_第3张图片

我们切换到pseudocode window指定a1的类型。我们把光标放在a1出现的地方,按Y

从汇编语言翻译到c语言中应该注意的问题_第4张图片

当我们按回车后,反编译器输出开始变得更容易阅读。

从汇编语言翻译到c语言中应该注意的问题_第5张图片

但是,这里还有一些改进。我们把这个结构体重新命名,并且指定它的类型。例如,fileld_6B1看上去像是一个计数器Fileld_6B5显而易见是一个函数指针。我们不需要切换窗口就可以做这些。只有初始化结构定义才需要切换到structure window窗口。这里我们指定函数指针的字段。

从汇编语言翻译到c语言中应该注意的问题_第6张图片

最终结果看上去像是这样。

从汇编语言翻译到c语言中应该注意的问题_第7张图片

这里没有强制类型转换,看上去比最初的代码好看了更多。

你可能感兴趣的:(从汇编语言翻译到c语言中应该注意的问题)