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

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

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

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

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

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值